Image captioning
Alt
Describe any image in one sentence, in English, Spanish, Portuguese, French, German, Arabic, Chinese, Japanese or Korean. Useful for alt text, search indexing and accessibility. Generated on-device, no image ever leaves the page.
Try Alt
Runs in this tab · nothing uploaded
Drop an image here
or click · PNG JPG WEBP
Caption
Caption will appear here…
What it does
One sentence for any image, in nine languages.
- LFM2.5-VL-450M (Liquid AI, Nov 2025). A small vision-language model, prompted for captions, not a dedicated captioner.
- Pass
language(en,es,pt,fr,de,ar,zh,ja,ko) to caption in that language. Other languages are best-effort. - Pass
detail: "detailed"or"more"for longer captions. Default is short alt text.onPartialstreams the text as it is generated. - License: LFM Open License v1.0. Free for individuals and companies under USD 10M annual revenue. Above that, Liquid AI requires a commercial license. Not OSI-approved; the rest of the catalog is Apache-2.0 or MIT.
- WebGPU is the fast path (fp16 vision + q4f16 decoder, about a second per caption). WASM works but takes ~30 s per caption.
- It is a generative model: captions can hallucinate details. Review before publishing.
Specifications
- Package
- runonweb/caption
- Base model
- LFM2.5-VL-450M · Liquid AI
- License
- LFM Open License v1.0 (free < USD 10M revenue)
- Download
- ~316 MB / ~505 MB
- Quantization
- fp16+q4f16 on WebGPUfp16+q8+q4 on WASM
- Backend
- WebGPUWASM fallback
- Input
- Image
Get started with runonweb/caption
pnpm add runonwebimport { ImageCaptioner } from 'runonweb/caption'
const captioner = new ImageCaptioner({ language: 'es', detail: 'short' })
await captioner.load()
const { text } = await captioner.caption(imageFile)
// "Un gato sentado sobre una mesa de madera."
// Per call overrides, streamed
await captioner.caption(imageFile, {
language: 'en',
detail: 'detailed',
onPartial: (partial) => console.log(partial),
})
captioner.dispose()Same shape everywhere: construct, load(), run, dispose(). Pass onProgressto show download progress on first use.
Questions about Alt
Does Alt run on device?
Yes. Weights download once and stay in the browser. Nothing is sent to a server.
What does Alt cost?
Nothing. runonweb is free and MIT-licensed, with no device limits, tokens or sign-in.
Which browsers support Alt?
Chromium browsers use WebGPU. Firefox and Safari fall back to WebAssembly automatically, slower but identical output.
Can I use a different model with runonweb/caption?
Yes. See each module’s docs for the options it accepts (model, size, language…). Check the license and test both backends before shipping.