Add Text to a Photo
Put a caption, quote, label or heading on any picture in under a minute, at zero cost. The typesetting happens right in the tab you are looking at - the photo never leaves your computer - and because letters are drawn as vectors, they come out razor-sharp at whatever size you export.
Loading the tool…
How it works
- Open your image and click Add text, then type your words.
- Choose a font, size and color, and drag the text block into position.
- Add an outline or shadow if the letters sit over busy detail.
- Export - the text is drawn at the final output resolution, not scaled up from the preview.
Worth knowing
Most casual editors rasterize text the instant you place it: the letters become pixels at whatever size your preview happens to be, and every later scale-up softens them. This editor keeps text as vector outlines through the whole session and rasterizes exactly once, at export, using the output dimensions. The practical consequence: the same caption is drawn with equally clean letterforms whether you export at 800 pixels wide for a chat message or 8000 pixels wide for a print file.
Legibility over a photograph is a contrast problem, and there are three standard fixes. An outline (a stroke around each letter in a contrasting color) works over anything and is the most compact. A drop shadow lifts text off midtone backgrounds with a softer look. A scrim - a translucent band behind the text - is the choice for longer passages, because it evens out the background across the whole block. Pick one; stacking all three is the typographic equivalent of shouting.
A few composition habits pay off immediately. Keep text away from the subject's face or the product itself; align blocks to an imaginary grid rather than eyeballing; and resist using more than two fonts on one image. If the destination is a platform that crops - story formats, thumbnails, cover photos - keep critical words near the center, since edges are the first thing cropping eats.
Format choice affects how crisp the letters survive. PNG preserves the hard black-to-white transitions of text perfectly and is the right pick when words dominate the image. JPEG compresses photographs better but tends to smudge faint ringing around high-contrast letter edges, so if you must use it, keep quality high.
Text here is rasterized exactly once, at export size - so a caption exported at 8000 px wide is drawn with 10x the edge detail of the same caption exported at 800 px, instead of being one soft bitmap scaled to fit both.
What this tool will not do
- It will not erase or replace words already printed in the photo - it only adds new text on top.
- It will not write captions for you; there is no AI copy generation, just your words.
- Exports are flat images - the text is not an editable layer in the downloaded file, so keep your original photo if you expect revisions.
Questions people ask
How do I put text on a picture for free without a watermark?
Open the image here, add and style your text, and export. Nothing is stamped on the output and no account is required.
Why does text on my photos usually look blurry?
Because most apps rasterize the letters at preview size and scale them up. This editor draws text at export resolution, which is what keeps edges crisp.
How do I make text readable over a busy background?
Add a contrasting outline for short text, a drop shadow for a softer look, or a translucent band behind longer passages. One technique is enough.
Should I export text-heavy images as PNG or JPEG?
PNG when text dominates - it keeps letter edges perfectly clean. JPEG is fine for photo-dominant images, but use a high quality setting to limit ringing around the characters.
Can I make a semi-transparent text mark across my photos?
For protecting images, use the dedicated watermark tool instead - it handles opacity, tiling and whole batches at once.
How do I get the classic meme lettering?
The meme generator applies that exact style - heavy capitals with a black outline - as a one-click preset.
Usually the next step
More in Create & Annotate
This page processed nothing on any server — there is no server. The technical explanation.