Add Text to Image

Add text, captions, and watermarks to any photo. Upload your own fonts, drag tex...

SecureFastFree

Updated

SSL Secured
256-bit Encryption
Cloud Processing
Mobile Friendly

Everything You Get

Custom Fonts - TTF/OTF/WOFF/WOFF2
5000px Max Size - Huge text support
Drag & Drop - Visual positioning
Rainbow Picker - Any hex color
Format Preserving - JPG stays JPG
Multi-Layer - Unlimited text
Text Shadow - Adjustable blur
9-Point Grid - Quick positions

Why Use Add Text to Image?

Custom Font Upload with Persistence

Upload your own TTF, OTF, WOFF, or WOFF2 font files and they stay saved in your browser via localStorage. Come back tomorrow and your brand fonts are still there. No re-uploading, no accounts, no cloud storage fees.

Drag-to-Position Anywhere

Click and drag text directly on the image preview to place it exactly where you want. A grip handle appears for precise control, or use the 9-point position grid and X/Y sliders for pixel-perfect placement. Works with touch on mobile too.

Unlimited Text Layers

Stack as many text elements as your design needs. Each layer has completely independent font, size, color, position, and shadow settings. Build complex layouts with titles, subtitles, and captions all on one image.

Text Shadow for Any Background

White text on a bright sky? Dark text on a shadow? Text shadow solves it instantly. Adjust shadow color and blur radius to make your text pop against any background without guessing. Enabled by default because it just works.

Format-Preserving Download

Upload a JPEG, get a JPEG back at 92% quality -- not a bloated 20MB PNG. The tool detects your original format and exports accordingly. PNGs stay PNGs with full transparency. WebP stays WebP. Your file sizes stay reasonable.

Rainbow Color Picker

Ten preset colors for speed, plus a full rainbow spectrum picker for any hex color imaginable. Match your brand colors exactly by entering a hex code or visually selecting from the gradient wheel. Shadow color is independently adjustable too.

Who Uses This and How

YouTube Thumbnail Text

Thumbnails live or die by their text. Upload your video still, add a bold title in Impact or a custom brand font at 150-200px, enable text shadow for contrast against any background, and position it in the left-center where eyes land first. The format-preserving download keeps your JPEG under 200KB -- right where YouTube recommends.

Instagram Quote Cards

Turn a simple gradient or lifestyle photo into a shareable quote post. Upload your background image, add the quote text in a serif font like Georgia at 72px, place the attribution name smaller below it at 36px using a second text layer. Use white text with subtle shadow for that clean editorial look. Export and post directly -- no Canva account needed.

Photo Copyright Watermarking

Protect your photography by adding your name or website URL as a watermark. Set the text to a subtle gray (#AAAAAA) at 24-48px, disable shadow for a cleaner look, and use the 9-point grid to place it in the bottom-right corner. For portfolio images shared on social media, this prevents uncredited reposting while keeping the image visually clean.

Event Announcement Graphics

Build event flyers from any photo. Add the event name as a large bold title layer, date and time as a medium layer below, and venue or RSVP details as a smaller third layer at the bottom. Text shadow ensures everything stays readable even over complex venue photos. Download and share across email, social media, and print.

How It Works

1

Drop Your Image

Drag an image onto the upload zone or tap to browse your files. Supports PNG, JPG, GIF, WebP, BMP, and any format your browser can handle. No size limits imposed by us -- the browser is the only constraint.

2

Type and Style Your Text

Enter your text, pick a font from the 10 built-in options or upload your own, set the size (8px to 5000px), choose a color, and toggle bold, italic, or shadow. Add more text layers with the + button for multi-line designs.

3

Drag to the Perfect Spot

Click the grip handle on any text element and drag it across the image preview. Use the 9-point grid for common positions (top-left, center, bottom-right) or fine-tune with percentage sliders. On mobile, just touch and slide.

4

Download in Original Format

Hit Download and get your image with all text layers burned in at full resolution. JPEGs export as JPEG, PNGs as PNG, WebP as WebP -- no surprise format conversion or file size explosion.

Pro Tips from Daily Use

Upload Your Brand Font First

Before adding text to a batch of images, upload your brand's TTF or OTF file once. It saves to localStorage automatically, so every future session starts with your fonts ready. This alone saves minutes per project compared to tools that require re-uploading every time.

Shadow Is Your Contrast Safety Net

Keep text shadow enabled (the default) and use white text with black shadow. This combination is readable on literally any background -- bright skies, dark forests, busy cityscapes. Only disable shadow for watermarks where you intentionally want subtle, low-contrast text.

Match Your Download Format to the Platform

For social media, upload JPEGs and get back compact JPEGs. For logos or graphics with transparency, use PNG. The tool auto-detects and preserves the format, so a 3MB JPEG stays around 3MB instead of ballooning to 20MB as a PNG.

Build Complex Designs with Layer Stacking

Use the first layer for the main headline, the second for a subtitle, and the third for small details like dates or URLs. Each layer is independently styled and positioned. Click a layer tab to switch to it, drag it to its own spot, and build professional multi-text layouts without any design software.

Frequently Asked Questions

Click the 'Upload Font' button in the Custom Fonts section and select a font file. We support TTF (TrueType), OTF (OpenType), WOFF, and WOFF2 formats. The font is loaded into your browser using the FontFace API, then stored in localStorage as a data URL. This means the font persists across sessions -- close the tab, come back next week, and your uploaded fonts are still available. No account or cloud storage needed.
Previously, all downloads were exported as PNG regardless of the input format. If you uploaded a 2MB JPEG photo, you could get back a 15-20MB PNG because PNG is lossless and much larger for photographic content. Now the tool preserves your original format: JPEGs download as JPEG at 92% quality (visually identical, reasonable file size), PNGs stay PNG, and WebP stays WebP. The format detection happens automatically when you upload.
Text shadow adds a colored glow or offset behind each character. The default setup -- white text with a black shadow at 4px blur -- creates contrast against both light and dark backgrounds simultaneously. On a bright sky, the black shadow provides contrast. On a dark forest, the white text itself stands out. You can customize the shadow color and blur radius (0-20px) for different effects. For watermarks, try matching shadow and text colors at low opacity.
Text size goes up to 5000px. This sounds enormous, but it is practical for large images. A 6000x4000px photo from a DSLR might need 500-1000px text for a visible watermark. The preset size buttons (24, 48, 72, 96, 150, 200, 500) cover common use cases, but you can type any number between 8 and 5000 in the size input field. The preview scales the text down to fit your screen, but the download renders at the full specified pixel size.
On touch devices, each text element has a grip handle (the dotted icon to its left). Touch and hold the grip handle, then slide your finger to reposition the text. The tool uses the Pointer Events API, which handles both mouse and touch input natively. The preview area has touch-action set to 'none' to prevent page scrolling while you are dragging text. For precise positioning, use the X/Y percentage sliders in the Position section below the preview.
The text on the preview is scaled to fit your screen, so it may appear smaller or slightly different from the final output. When you click Download, the tool draws everything on a hidden canvas at the original image resolution. A 4000x3000px image gets text rendered at actual pixel sizes on that 4000x3000 canvas. This means a 200px font on a 4K image looks exactly as specified -- crisp and properly sized.
For watermarking, create a text layer with your name, website, or copyright notice. Set the font size relatively small (24-72px depending on image size). Use a semi-transparent color by choosing a light gray like #CCCCCC or white with shadow disabled. Position it in the bottom-right corner using the 9-point grid (click the bottom-right preset). For diagonal watermarks across the entire image, you would need to add multiple text layers at different positions since rotation is not yet supported.
The 10 built-in fonts are web-safe and render nearly identically across Chrome, Firefox, Safari, and Edge. However, minor differences in anti-aliasing (font smoothing) can make text appear slightly bolder or lighter between browsers. Custom uploaded fonts render using the FontFace API, which is consistent across modern browsers. If you notice rendering differences, it is usually the anti-aliasing -- the actual glyph shapes and sizes are identical.
Text layers render in the order they appear in the layers list -- the first layer you created draws first (appears behind), and the most recently added layer draws last (appears on top). If you need a specific stacking order, you can remove and re-add layers. Each layer is independently clickable for editing, and the active layer shows a blue ring highlight on the preview.
Yes. Download your image with text, then upload the result to the crop, resize, or any other image tool. The text is permanently rendered into the image pixels on download, so subsequent tools treat it as a normal image. A common workflow is: add text here, then crop to social media dimensions, then compress for web upload.
Currently, the tool processes one image at a time. For batch text adding, process each image individually -- your custom fonts and style preferences persist in the browser, so the workflow is fast after the first setup. Upload, type, position, download, repeat. The font and color selections carry over between images since the tool state remains until you reset.
Yes. PNGs are detected on upload and exported as PNG, which preserves the alpha channel (transparency). The text itself is opaque at the color you choose, but all transparent areas of the original image remain transparent in the download. The preview shows a checkerboard pattern behind transparent areas so you can see where transparency exists.
No. The text is rasterized -- burned into the image as pixels during the canvas rendering process. It cannot be selected, copied, or read by screen readers in the downloaded image. For accessibility on the web, always provide alt text for images that contain meaningful text content. If you need selectable text over an image, consider using CSS text overlay in HTML instead of baking text into the image file.
No. The entire tool runs in your browser using the HTML5 Canvas API. Your images are loaded into memory on your device, text is drawn on a canvas element, and the download is generated locally. Nothing is transmitted to any server. We physically cannot see your photos because no network requests are made with your image data. Close the tab and the image is gone from memory.
The current image and text layers are lost on refresh because they are stored only in browser memory, not in localStorage. However, your uploaded custom fonts are preserved in localStorage and will be available when you return. To avoid losing work, download your image before navigating away. There is no auto-save for the current editing session.
There is no step-by-step undo button. However, you can edit any text layer at any time by clicking on it -- change the content, font, color, size, or position freely. To start completely fresh, click the X button in the preview header to remove the image and reset all text layers. Your custom fonts remain saved even after a full reset.

Related Tools