Add text to a GIF
Write a caption on every frame of an animated GIF and drag it where you want it. Done on this device, and the GIF is not uploaded.
- Nothing is uploaded
- Works offline after first visit
- Open source
- No watermark. The limit is your device’s memory (phones hold less): a long or very large GIF may need a computer.
Writes your text on every frame of an animated GIF, in the font, colour and outline you choose, and saves a new GIF that keeps each frame’s timing and the loop setting. It is free, needs no account and adds no watermark, and your GIF is not uploaded: every frame is drawn and rewritten by code in this tab. The size limit is your device’s memory, and phones hold less; after one visit and a short wait the page works offline.
Drag the text on the picture to move it.
Done
Open the network tab. Your files never appear in it.
Add files and run the tool to see every request this tab makes.
Your files are processed on this device and never sent to a server. Reload the page to clear everything from memory.
A worked example
You have reaction.gif, 480 by 270 pixels with 40 frames, and you want WHEN THE BUILD PASSES across the bottom. Drop it, type the words, drag them to the bottom edge, choose the bold font with an outline so they stay readable over the changing picture, and set the size to 12.
The size is a share of the shorter side, so 12 on a GIF 270 pixels high gives letters 32 pixels tall. Press Add text. The same words are drawn in the same place on all 40 frames, and you download reaction-text.gif: 480 by 270 pixels, playing at the same speed as the original.
What you can set
- Up to two pieces of text, for example a top and a bottom caption, each dragged to where you want it.
- Font: a clean sans, a bold face, a serif, a handwritten face or a monospace.
- Colour, size, opacity, upper case, and an outline, a shadow or a box behind the letters.
What this page does not do
- The text is the same on every frame. It cannot appear for only part of the animation, and it does not move.
- It works on one GIF at a time. A long or very large GIF uses a lot of memory, and a phone may run out of it sooner than a computer.
- The result is a GIF, so each frame holds at most 256 colours. To make the file lighter afterwards, use Compress GIF.
How it works
- Drop an animated GIF, or tap to pick one.
- Type your text, then drag it on the preview to place it. Pick a font, colour, size and an outline, shadow or box so it reads on every frame. Add a second text for a caption at the other end.
- Press Add text. The text is drawn on every frame, and the new GIF downloads with the same size and timing.
In your browser, not on a server
The GIF is decoded frame by frame with gifuct-js (MIT) and each frame is composited the way browsers play it. Your text is drawn on every frame on a canvas by your browser, and the frames are written back as a GIF with gifenc’s (MIT) colour quantizer and LZW coder. Everything runs in your tab.
Compared with upload-based tools: The GIF is read and rewritten on your device, so the limit is how much memory your device has: a long or very large GIF may need a computer.
Verify it yourself. Give the page a short while after one visit to save itself for offline use, then turn off Wi-Fi or switch to airplane mode and run the tool again. Or open your browser's developer tools (F12, or Cmd-Option-I on a Mac), pick the Network tab, and watch it while you convert. The panel above does the same count for you.
Questions
How do I add text to a GIF?
Drop the GIF, type your text and drag it to where you want it on the preview. Choose a font, colour, size and an outline, then press Add text. The text is drawn on every frame, and the new GIF downloads with the same size and timing.
Does the text appear on every frame?
Yes, in the same place and style on all of them. This page cannot show text for only part of the animation or move it.
Does it change how fast the GIF plays?
No. Every frame keeps its own delay and the loop setting is copied, so the new GIF lasts as long as the original and repeats the same way. Frames with a delay of 10 milliseconds or less are written as 100 milliseconds, which is how browsers already play them.
Will the colours or the file size change?
They can. A GIF holds at most 256 colours per frame, and the whole GIF is written again with your text on it, so smooth gradients and soft shadows can look a little different, and the file can come out larger or smaller than the original. Compress GIF makes a GIF lighter afterwards.
Which fonts can I use?
A clean sans, a bold face, a serif, a handwritten face and a monospace. The sans and the handwritten face are this site’s own fonts; the bold face, the serif and the monospace are drawn with the fonts your device has, so they can look a little different on a phone than on a computer. Once the GIF is saved the letters are pixels and look the same everywhere.
Can I add text to a GIF with a transparent background?
Yes, and transparent areas stay transparent. GIF transparency is on or off, so where text sits over a transparent area its edges can look rough. Choose an outline or a box to make it read cleanly.
Can I add text to a GIF without uploading it?
Yes. Your browser reads the GIF, draws your text onto every frame and writes the new GIF with code running in this tab. Open the network tab, run it, and your GIF is not among the requests. After one visit and a short wait the page works offline.
Can I add text to a photo or a video instead?
For a photo or a screenshot, use Add text to image. To turn a video clip into a GIF first, use Video to GIF.
More image tools
Merge GIFs
Join several animated GIFs end to end, in the order you choose. They are put together on this device, and the GIFs are not uploaded.
GIF maker
Your pictures turned into one looping GIF, put together on this device, with no watermark.
Favicon generator
Drop in your logo and get every icon a website needs, plus the HTML to paste. Unreleased logos stay on this device.
Remove background
Cut out people, pets and products at full resolution. The photo never leaves this device.