# Alt Text Writer > Drop one image or a batch of up to 24 and get, for each: accessible alt text within a character limit you set, a longer description, a social caption with hashtags, and the text visible in the image. Give the page context and the alt text says what matters on that page. Every alt text is checked in the browser for common mistakes. Export CSV, HTML, Markdown or JSON. URL: https://alt-text-writer.skillsafe.ai/ API: https://alt-text-writer.skillsafe.ai/api.html ## What it does - One paid step per six images: an AI model decides what kind of image each is (informative, decorative, link or button, chart or diagram, image of text) and writes alt text, a description and a caption for the chosen purpose (article, product page, social post, docs, slides) and platform (any page, Instagram, X, LinkedIn). - Decorative images get an empty alt (alt=""). Links and buttons get alt text naming the action. Images of text get the text. Charts get a one-line takeaway in the alt and the data in the description. - Free checks in the browser on every alt text, re-run as you edit: over the limit, starts with "image of" or "photo of", a file name, a placeholder word, "click here", emoji, all capitals, line breaks, same as the caption, missing words from an image of text, no closing full stop. - Free alt text checker: paste existing alt texts, one per line, and see the same checks. - Re-write one image with a note ("shorter", "mention the logo"). - History of batches on the signed-in account (guests: this browser only). - Faces are never identified; names come only from the person's notes or text visible in the image. ## Pricing No API key needed: pay per run with SkillSafe credits. The estimate is shown as reserved before the run; the charge after is what the run used. The example batch and the checker are free. ## Guidance it follows WCAG 2.2 success criterion 1.1.1 (Non-text Content) and the W3C WAI images tutorial. WCAG sets no alt text length; about 125 characters is a common house limit and is the default here, adjustable from 40 to 300. ## Output contract JSON: {"images":[{n, kind (informative | decorative | functional | complex | text), alt, description, caption, hashtags[], text_in_image, flags[]}]}