# IndiePreview

> Shows how a link looks on X, LinkedIn, Slack, Discord, and iMessage, drawn from the page's own tags.

See your link the way X, LinkedIn, Slack, Discord, and iMessage will.

The canonical page is https://indiepreview.com/.

## Use the tool

Open [IndiePreview](https://indiepreview.com/) to complete the job. The questions below describe the supported input, result, and limits. Every answer names its source next to it.

Source: []().

## Questions and limits

### What are Open Graph tags?

Open Graph tags are `meta` tags in a page's `head` that tell a chat app or a social network what to show when someone pastes the link: `og:title`, `og:description`, `og:image`, and `og:url`. Facebook wrote the [protocol](https://ogp.me/), and X, LinkedIn, Slack, Discord, and iMessage each read some of these tags. X also reads its own `twitter:` tags and prefers them where both exist.

### What does ready or needs work mean for a platform?

Ready means the page has every field the platform's own documentation lists as required or recommended for the card, and the image passed the size and format rules where the platform publishes them. Needs work means a preview can be drawn, but at least one field is missing or the image falls short. No preview means the platform has no usable title, so it shows nothing beyond the bare link.

### Why does my link preview not show an image?

The platform found no image tag it reads, or it found one it cannot use. IndiePreview names which: a missing `og:image` or `twitter:image`, an address that does not resolve to a public URL, a format the platform does not list, or a file too small for the card. X asks for 300 by 157 pixels on a large card, LinkedIn for 1200 by 627, and Apple recommends at least 900 pixels wide.

The check fetches the `og:image` file and reads its size from the first bytes, so it measures only that image. When a platform picks a different image, such as `twitter:image` on X, the row says that its size is not verified.

### How do I fix my link preview?

Add the tag each row names, deploy, and check again. Every platform accepts `og:title`, `og:description`, `og:image` with a full https address, and `og:url`. Give X a `twitter:card` of `summary_large_image` and an `og:image:alt`. Give iMessage an `apple-touch-icon` link for its compact card. Try a title and description in the result page first: the mockups redraw in your browser and the page lists the head lines to change.

You can also choose a local JPG, PNG, or WebP image up to 5 MB and 24 million pixels to try its crop in the mockups. The file stays in your browser and does not change the fetched image evidence or platform status. Publish that image at a public URL before using it in `og:image` or `twitter:image`; copied text tags do not include the temporary local image address.

Platforms cache what they fetched. After a deploy, X, LinkedIn, Slack, and Discord can keep showing the old card for a while. A fresh check here reads the tags on the live page, not what any platform has stored, so the two can disagree until the platform fetches the page again.

### Why does the check find no tags when my page has them?

IndiePreview reads the HTML the server sends and does not run JavaScript. A page that injects its tags with a client-side framework after load looks empty to this check, and to most platform fetchers too, so move the tags into the server-rendered `head`. A site that answers a bot challenge, a consent page, or a login page instead of the real page returns no tags either, and the result says so.

### Does a ready status match what the platform will show?

Not exactly. Each mockup follows the platform's public documentation, dated and linked beside it, and Slack and Discord do not publish the exact tags they read or which wins when Open Graph and X tags both exist. Layout, cropping, and fonts also change between apps and devices. Treat ready as the tags being in order, and paste the link into the real app once before a launch.

## Promises

- The core is free: no account, no card, no premium plan, no upgrade nag, no hidden paywall.
- Private lookup activity is never published.
- Cookieless analytics measures visits and incoming campaign attribution. It never receives entered values or file contents. No lookup history becomes public inventory.

## More

- [Notes](https://indiepreview.com/blog.md): posts by the maker, newest first
- [More tools](https://indiepreview.com/tools.md): the other tools by turushan
- [security.txt](https://indiepreview.com/.well-known/security.txt): how to report a vulnerability

Made by turushan, https://twitter.com/turushan.
