Back to Blog & Resources
Engineering

Why Your Bluesky Links Aren't Clickable (and How to Fix It)

June 23, 2026 - 7 min read

The symptom: a URL that is just gray text

You post a link on Bluesky and instead of a clickable, highlighted URL you get plain, unclickable text. People cannot tap it. This trips up users posting through certain tools, automation platforms, and anyone calling the API directly. The good news: it is not a bug in your account or a Bluesky outage. It is a design choice, and once you understand it, the fix is straightforward.

Why Bluesky does not auto-link URLs

Most platforms scan your text and turn anything that looks like a URL into a link automatically. Bluesky deliberately does not. Instead it uses rich text facets: a separate list of annotations that say which byte range of the text is a link and where it points. The post text stays plain, and the facets describe what is special about parts of it. Bluesky's developers chose this because it is more precise and avoids guessing wrong, but it means links only work if facets are attached.

So when a link is not clickable, the post simply has no facet pointing at it. The text is there; the annotation that makes it a link is missing.

If you are posting in the official app

Good news: the official Bluesky app and website build facets for you automatically. Type or paste a full URL including the https prefix and the app detects it and makes it clickable. If a link is not working in the official app, the usual culprits are a missing https prefix, or pasting a URL that has been visually shortened or wrapped so the app cannot parse it cleanly. Paste the full, raw URL and it should light up.

If you are using a third-party tool

This is where most broken links come from. Some scheduling tools, integrations, and no-code platforms send only the post text and forget to generate the facets array. The post publishes, the URL appears, but it is dead. If a tool consistently produces unclickable links, it is not building facets correctly, and that is a sign the tool was not designed Bluesky-first. A native Bluesky scheduler should make every link clickable without you thinking about it.

If you are calling the API yourself

Calling createRecord with just text will never produce a clickable link. You must include a facets array. The critical detail that breaks most first attempts: facets index by UTF-8 byte offsets, not character positions. byteStart and byteEnd must be byte indexes into the UTF-8 encoding of your string. Put an emoji before your link and naive character counting will be off by several bytes, sending the link to the wrong place.

A quick mental model

Think of the text as the paint and facets as the labels saying which parts are special. The official app paints and labels for you. Good third-party tools do too. Bad tools paint but forget to label, which is why your link is just gray text. If you are coding, you are the labeler, so use a library so the byte math is right.

The shortcut

If you would rather never think about facets again, use a tool that is Bluesky-native by design. ONYX builds clickable link facets automatically for every scheduled post, alongside alt text and real thread chaining, for a flat $7/month with a free tier. Links that just work, without the byte arithmetic.

FAQ

Why is my Bluesky link showing as plain text?

The post has no facet pointing at the URL. Bluesky does not auto-link; it uses a separate facets array to mark links. In the official app, paste the full https URL. In a third-party tool or the API, facets must be generated for the link.

Do I need to do anything special in the official Bluesky app?

Usually not. The app builds facets automatically. Just paste the complete URL including the https prefix. Links break most often when the prefix is missing or the URL was visually shortened before pasting.

How do developers make links clickable via the API?

Include a facets array with byteStart and byteEnd as UTF-8 byte offsets, not character positions. Use the RichText detectFacets helper in @atproto/api or your SDK's equivalent so offsets are correct even with emoji or non-ASCII text.

Schedule your BlueSky posts with ONYX

AI drafts in your voice, a real calendar, threads, and analytics - built for BlueSky. Free forever, no credit card.

Start Free

Related ONYX resources

Keep reading