Quote image maker for social posts

This quote image maker turns a quote into a square, portrait, story or landscape image. Type the quote, pick a font, colours and aspect, and download a PNG, JPEG or WebP; the same code draws the preview and the export, so the file matches the preview.

Runs in your browser.

Text and files stay on your device.

Maintained by the bundle.social team, last updated . How we check the numbers

Loading the tool

How to use

  1. 01

    Write the quote

    Paste or type the text and, if you like, the author. Line breaks are kept and long words wrap by character. If the text does not fit, a notice appears.
  2. 02

    Style it

    Choose the site font or a system serif, sans-serif or monospace face and set the size and alignment. Then pick a text colour and a solid or two-colour gradient background.
  3. 03

    Pick the shape

    Choose square, 4:5, story 9:16 or landscape 16:9, and set the padding. The preview updates as you go.
  4. 04

    Download

    Select the longest edge (1080 to 4096 px) and PNG, JPEG or WebP, then download. The image is created on your device.

Why the preview and the export match

One renderer draws both. It lays the text out at a reference width of 1080 pixels and scales it once to the target size. The preview uses your screen's pixel density so it stays sharp, and the export uses the size you picked. The tool waits for fonts to load before the first draw, so the preview never shows a fallback face.

Limitations

  • Fonts are limited to what is already on the page and on your device: Inter plus your system's serif, sans-serif and monospace. The exact system faces differ between Windows, macOS, Linux and phones, so the same settings can render slightly differently elsewhere.
  • You cannot upload a font or add image backgrounds, logos or extra text boxes. For layered designs, use a design tool and bring the result to the resizer.
  • Text can be up to 1,000 characters, and the image is capped at 4096 px on the longest edge.
  • The site loads Inter with its Latin subset only, so Polish and other Central European letters (ą, ę, ł, ś, ż) may be drawn in a fallback face when you pick the site font. The system serif, sans-serif and monospace options usually cover them.
  • When the text does not fit the image, the download stays disabled until you shorten it or change the size, so a clipped image is never exported.
  • Right-to-left scripts and complex shaping depend on the browser's canvas text support and may not match what a word processor shows.
  • The contrast check is rough, and text may still be hard to read on some screens.

bundle.social is not affiliated with, endorsed by, or sponsored by Instagram, Facebook, Meta, X, TikTok, LinkedIn, YouTube, Threads, Bluesky, Pinterest or any other platform named here. Platform names and logos belong to their owners and are used only to describe compatibility.

FAQ

Is the quote sent to a server?

No. Your browser renders the image with the Canvas API, and the download comes straight from there.

Can I use my own font?

Not in this tool. It offers only fonts that need no extra files: the site font and your system's generic families. That keeps it fast and avoids licensing questions.

Which size should I choose for Instagram?

For the feed, 4:5 at 1080 px wide is the usual choice, and 9:16 for Stories. Pick a longest edge of 1080 or 1440 px. Larger exports only help for print or very large displays.

What does the 'Text does not fit' notice mean?

The wrapped text is taller than the padded area, so part of it would be cut off. Shorten the quote, reduce the font size or padding, or switch to a taller aspect such as 4:5 or 9:16.

Does it support Polish and other accented characters?

Yes. Wrapping works on whole characters, so letters such as ą, ł or ż are never split. The site font loads only its Latin subset, so those letters may appear in a fallback face. The system serif and sans-serif options usually render them in one face.

Related tools

Publish what you prepared

bundle.social schedules and publishes posts to 15 networks from one dashboard or one API. The free plan needs no card.