Guides · Updated

How to add alt text to images on X and LinkedIn

On X, attach a photo, select +Alt in the mobile app or Add description on the web, write the description and select Done. On LinkedIn, upload the image, select Alt.text on desktop or ALT on mobile, write the description and select Save or Done. Do this for each image before publishing.

Alt text describes the image to someone who cannot see it. It is separate from the post's visible caption, and a screen reader can read it alongside the post. You don't need a scheduling tool to add it in either app.

The networks' own help pages and API documentation were checked on October 26, 2026. X Help was checked through its search-indexed text because direct access returned 403; X's API reference and LinkedIn's help and API docs were read directly. This is a documentation check, not a live posting test. Sources are linked beside the claims below.

Alt-text character limits: app and API are different contracts

Network and route Documented maximum per image Where the number comes from
X app and web 1,000 characters X's image-description help
X API v2 1,000 characters metadata.alt_text.text in the media metadata reference
LinkedIn app and web No numeric maximum stated in the cited help page Use the composer's own validation; the API number below is not proof of the app's limit
LinkedIn API 4,086 characters LinkedIn's Images and MultiImage API docs; they recommend fewer than 120 characters

A maximum is not a target. Use enough words to convey what matters, not every character the field accepts. LinkedIn's fewer-than-120 recommendation is guidance, not its 4,086-character API maximum. A third-party tool may validate a different length, so check the route you actually use.

Why image descriptions matter

A screenshot, chart or photo can carry the main point of a post. Without a useful description, someone using a screen reader may receive the caption but miss the evidence or instructions inside the image. LinkedIn's accessibility help explicitly describes alt text as a way for screen-reader users to understand images. X's image-description help explains how to make photos accessible.

Write for that person, not for a search ranking. Alt text is not a place for promotional copy, keyword stuffing or a second unrelated caption. It does not replace captions for speech in a video or make a PDF document accessible.

Add alt text on X: iPhone, Android and web

X's instructions for image descriptions give these routes:

  1. Start a post and attach a photo.
  2. On iPhone or Android, tap +Alt on the image. On x.com, click Add description below the image.
  3. Describe the image, using up to 1,000 characters, then select Done.
  4. Repeat for every attached image. Reopen a description to check or edit it before posting.
  5. Review the complete post and publish when you are ready.

X also calls the control +ALT in its short image-description guide. A described image has an ALT badge that readers can select to read the description. The description is attached to the image, not inserted into the post's text. These are instructions for photos, not a video-captioning workflow.

Add alt text on LinkedIn: desktop and mobile

LinkedIn's own alt-text help documents the following steps:

  1. Start a post and upload your image.
  2. On desktop, click Alt.text below the image. In the mobile app, tap ALT below the image.
  3. Enter the description. Select Save on desktop or Done on mobile.
  4. Repeat for each image, review the post, then publish when ready.

LinkedIn can generate a description if you don't supply one. Its help says desktop uploaders receive a notification when this happens, while mobile uploaders do not. That is not a guarantee that an automatic description captures your chart's conclusion, the text in a screenshot or why this particular photo matters. Write and review your own when that context is important.

The cited help page gives no numeric app limit. LinkedIn's API documents 4,086 characters, but it would be misleading to promise that the native composer accepts that many based only on the API. Check descriptions before publishing rather than relying on a later edit; this guide does not establish an after-publication editing workflow.

Write a description that supplies the missing information

X's writing guidance recommends clear, objective descriptions and including relevant text from the image. Don't infer someone's emotions, identity or intent from their appearance. If an image contains too much text to fit, summarize the important part and put a link to the original document in the post rather than burying it in alt text. Avoid needlessly repeating information the post already provides.

For example, for a synthetic bar chart, “Bar chart: 24 drafts in September and 36 in October, a 50% increase” conveys more than “Chart of drafts.” For a screenshot, describe the relevant control or result and transcribe the words needed to understand it. For multiple images, give each its own description; don't copy the same generic sentence onto all of them. Use extra detail when it changes the meaning, not simply because there is room.

X API: write media metadata before attaching the image

For an integration you control, upload the image first and retain its media ID. The current X media metadata endpoint is POST https://api.x.com/2/media/metadata. Its request body uses id, not media_id, and nests the description under metadata.alt_text.text:

{
  "id": "1234567890123456789",
  "metadata": {
    "alt_text": {
      "text": "Bar chart: 24 drafts in September and 36 in October, a 50% increase."
    }
  }
}

This is an illustrative metadata body with a placeholder ID, not a runnable posting recipe. The text maximum is 1,000 characters. Use authorized user-context credentials; the OAuth 2.0 route requires media.write. Send metadata before creating the post that attaches that media ID. Putting alt_text in the post's visible text is not the same operation, and an upload's success alone does not establish that the description was saved. Check the metadata response and don't silently discard a failure in your own integration.

These are the current v2 fields. Don't mix them with an older v1.1 media-metadata example that uses a different endpoint or body. For the surrounding upload and post fields, see the X threads, polls and media guide.

LinkedIn API: put altText on each post image

Upload the image through the Images API to obtain an image URN. LinkedIn's Images API example then creates a post through POST /rest/posts, with the description in content.media.altText and the image URN in content.media.id. Here is just the content fragment, not a complete publish request:

{
  "content": {
    "media": {
      "id": "urn:li:image:EXAMPLE",
      "altText": "Bar chart: 24 drafts in September and 36 in October, a 50% increase."
    }
  }
}

For multiple images, the MultiImage API puts each image URN and description in content.multiImage.images[].id and content.multiImage.images[].altText. The documented maximum is 4,086 characters and the recommendation is fewer than 120. Both references here use LinkedIn API version 202610. Alt text belongs in these post-content fields; a filename, a visible commentary caption or an upload initialization is not a substitute.

A complete integration also needs member consent, the right publishing permission and the version headers. Those requirements are separate from naming the field correctly. See the LinkedIn personal-profile API guide for the permission boundaries.

One other option: prepare image descriptions in Flaghand

If an AI agent prepares your posts, Flaghand is one option for carrying alt text with the draft rather than asking you to retype it in each app. Its drafts and media reference documents a library image's default alt and a draft's per-image media[].alt override. If the draft omits that override, the library description is copied into the draft. The implemented checks enforce X's 1,000-character and LinkedIn's 4,086-character image limits; these are platform constraints, not writing targets.

Agents can upload, draft, check and request approval through the API or MCP. Agent tokens cannot approve, schedule or publish. The owner reviews the exact snapshot, including the image descriptions, and approves with a passkey. LinkedIn support is for personal profiles, not company Page publishing. LinkedIn live post read-back is unavailable with Flaghand's current permissions, so a returned post link is not a verified match of the live image description. The agent reference explains that boundary.

Public sign-up is not open yet. Join the Flaghand waitlist if this workflow fits. For a photo you are posting yourself today, the native X or LinkedIn controls above are the simpler option.