Say what you want it to
look like.

Type a description. Get a whole theme back — background, type, buttons, corners — already checked for readability. Try it right here; this one runs in your browser.

Theme returned

contrast 13.4:1 PASS

background
#050705
text
#5cff8f
button
none
corner radius
0px
typeface
geist-mono

Every value stays editable afterwards. The AI writes the first draft, not the last word.

Mara Vance

Photographer · Lisbon

New work — 2026
Book a session
Newsletter
Shop prints

hasl.ink/mara

Then move it yourself.

The generated theme is a starting point that lands on the same controls you would have used from scratch. Nothing is baked in, nothing is a preset you cannot open. Change one value and the preview updates as you drag.

Ask for a change in words instead and it edits only what you named — “warmer background, keep the buttons” leaves the buttons alone.

Open the studio

Design controls

Background

  • Solid, gradient or image
  • Angle and stops on gradients
  • Blur and dim on images

Type

  • Eight faces, mono to serif
  • Heading and body size
  • Letter spacing

Buttons

  • Fill, outline or ghost
  • Corner radius, 0 to round
  • Border weight and colour
  • Shadow — or honestly, none

Layout

  • Stack, grid or cards
  • Avatar size and shape
  • Spacing between links

Extras

  • Social icon row position
  • Badge on or off (paid)
  • Custom accent per link

It refuses to make it unreadable.

Every theme is checked against WCAG contrast ratios before it reaches your page. The rejected one is what most “aesthetic” bio pages ship anyway.

Rejected — 1.8:1

readable

Mara Vance

Photographer · Lisbon

Book a session
Shop prints

Fine on your laptop indoors. Gone on a phone outside.

Shipped — 11.6:1

readable

Mara Vance

Photographer · Lisbon

Book a session
Shop prints

Same palette the prompt asked for, readable in daylight.

Questions.

How does the AI design generation actually work?+
You type a description in plain words — 'warm pastel morning', 'terminal green on black', 'luxury gold minimal' — and the AI returns a complete theme: background (solid, gradient, or image treatment), text colors, font choice, button style, border and shadow settings. It reads your profile and links first, so a photographer gets a different interpretation of 'minimal' than a Twitch streamer. You preview it live before anything saves.
What is WCAG contrast validation and why should I care?+
Every AI-generated theme is checked so text-on-background and label-on-button combinations meet WCAG contrast ratios. In practice: no white text on pale yellow, no grey-on-grey buttons that vanish on a phone in sunlight. Most 'aesthetic' bio pages fail this and quietly lose clicks from people who literally can't read the links. hasl.ink refuses to generate an unreadable theme.
Can I edit the AI theme afterward, or is it all-or-nothing?+
Every value the AI sets is a normal setting you can override. Generate 'dark neon brutalist', then swap the accent color, change the link style from glass to outlined, or bump the avatar size — the rest of the theme stays. You can also skip the AI entirely and build manually: 5 link styles (solid, outlined, glass, gradient, neumorphic), solid/gradient/image backgrounds, avatar borders, container width, all of it.
How many AI designs can I generate?+
The Free plan includes AI design generation with the basic model — enough to land on a theme you like. Pro ($6/mo) gives you unlimited AI design generations, so you can iterate endlessly or redesign for every campaign. Manual customization is unlimited on every plan, including Free.
Can I reuse an earlier design?+
Reuse, yes; export as a file, not yet. Every design the AI generates stays in the studio's chat history with a Load button, so you can bring back last month's look in one click. Loading a design only changes the preview — your live page doesn't change until you press Save, so trying things costs nothing.
Will my page still look like a Linktree template?+
That's the point of the studio: it won't. Linktree gives you a picker of preset themes, and the good ones sit behind their $9/mo tier. hasl.ink generates a theme from your words and lets you override any single value, so two users who both type 'dark academia' still end up with different pages. Add a custom domain on Creator ($15/mo) and there's no hasl.ink branding in the URL either.

Describe yours.

Claim a handle, type a sentence, and see the page before you commit to anything.

hasl.ink/