Logo

MonoCalc

/

Quote Card Generator

Social Media

Preview

Show guides

Type a quote to see it set
The card is drawn from the moment you start typing. Nothing is written onto it until then — the preview above is the background on its own.

The quote

You supply the words and the name
This tool has no quote library and does not check attributions. It draws exactly what you type, so the wording and the name are yours to get right — a primary source, such as the book, the transcript or the recording, settles both.
Line breaks you type are kept as hard breaks. Everything else wraps to fit.

0 characters. There is no limit; a long quote is simply set small.

Left blank, nothing is drawn — no dash, no placeholder, and the quote re-centres.

Card shape

Plain geometry. Nothing here claims a platform uses any of these shapes.
The other edge follows from the ratio. The file is written at this size, not at the preview size.
Auto follows the first strong character of the quote.

Typography

No font file is downloaded, so the exported card uses the fonts installed on this device.

Bold

Italic

The margin the text block is centred inside.
The longest a line may be. A narrower measure is what makes a quote look set rather than stretched.
A multiple of the ink height measured on this device, not of an assumed em.

Decorative quote mark

Hanging punctuation — an opening mark sits outside the measure so the first letter lines up with the lines below

Background

Download

PNG is lossless and ignores this setting, so it is switched off.

Writes 864 × 1,080 px

File size measuring…

With the quote empty the card is still downloadable — it is the background on its own, saved as quote-card.png.

About This Tool

Quote Card Generator — typography first, in your browser

A quote card is one block of prose set well inside a shape you can post. This tool does that and little else: you type the words, optionally add an attribution, choose a ratio and a background, and the card is drawn onto a <canvas> in this tab and saved to your device as a PNG, JPEG or WebP. Nothing is uploaded, because there is no server here to upload anything to — the whole tool keeps working with the network switched off.

How the text is fitted

The interesting part is the fitting. Rather than asking you to nudge a font-size slider until the text stops spilling, the tool searches for the largest whole-pixel size at which the wrapped block still fits the padded area, using a binary search between 8px and half the shorter card edge. It re-wraps the text at every size it tries, because wrapping and size are coupled: shrink the letters and two short lines merge into one, so a height judged against a wrap computed at some other size describes a layout that does not exist. The attribution line and the gap above it are part of that same measurement, which is why adding a name can pull the quote size down a step.

Every width in that search comes from measureText() on the real canvas after the font has been set — never from an assumed character width. Line spacing works the same way: the tool reads the actual ink height of the lines through actualBoundingBoxAscent and actualBoundingBoxDescent and multiplies that by your line height, falling back to the font size only where a browser reports no metrics. Words too long to break at a space — a URL, a hashtag, a run of CJK with no spaces — are split at grapheme boundaries, so an emoji, a flag or a combining accent is never cut down the middle.

Measure and line height are the two dials that matter

The measure is the longest a line may be. Left unbounded, text on a wide card runs the full width and the eye loses its place on the return sweep, which is why the measure here is capped at a fraction of the card width you control, and why the text column is centred rather than stretched. Line height then governs how the block reads as a mass. Both are shown live in the fit readout, along with the fitted size, the number of lines, and how close the longest line sits to the measure.

Turn the guides on
The guides overlay draws the padding box, the measure column and each baseline. It is the quickest way to see why a line broke where it did, rather than guessing at it.

The card uses the fonts on your device

No webfont is fetched. A stack such as Georgia, Times New Roman, Liberation Serif resolves to whichever of those a device actually has, and different letterforms have different widths — so the same quote can break differently and settle at a different size on a phone and a laptop. That is how canvas text works, and it is precisely why every measurement is taken at draw time on the machine doing the drawing. Once the card is exported it is a fixed bitmap and looks the same everywhere.

Quoting accurately

A quotation has two parts to get right: the wording and the person. Misattribution is common and durable — lines travel for years attached to names that never said them, picked up from one aggregator page by the next, and a card makes an attribution look settled whether or not it is. This tool deliberately ships no quote library and no random-quote button, and it does not check, correct or vouch for anything you type.

Check a primary source
Before you set a line in type, trace it to the book, the transcript, the recording or the published interview it came from. A quote-aggregator site repeating a line is not evidence that the line was said, or that the name beside it is the right one.

Leave the attribution field empty and nothing is drawn — no “Anonymous”, no stray dash — and the quote re-centres into the space. For photo backgrounds, a scrim sits between the picture and the type, and the tool reports the WCAG contrast ratio between your text colour and the pixels actually behind the text block, stating the 4.5:1 and 3:1 thresholds it checks rather than handing you a grade. The file is written at the ratio's full pixel size, not at the preview size, and the exact byte count is shown beside the download button.

Frequently Asked Questions

Is the Quote Card Generator free?

Yes, Quote Card Generator is totally free :)

Can I use the Quote Card Generator offline?

Yes, you can install the webapp as PWA.

Is it safe to use Quote Card Generator?

Yes, any data related to Quote Card Generator only stored in your browser (if storage required). You can simply clear browser cache to clear all the stored data. We do not store any data on server.

How does this quote card generator work?

You type a quote, optionally add an attribution, pick an aspect ratio and a background, and the tool draws the card onto a canvas inside this browser tab. The typography is the part doing the work: the text is wrapped by measuring the real font on the real canvas, and the font size is then found by a binary search that re-wraps the text at every size it tries and keeps the largest one where the whole block still fits inside the padded area. When it looks right you download it as a PNG, JPEG or WebP at full resolution. The preview is drawn by exactly the same code as the file, so the file is what you saw.

Why is there no library of famous quotes to pick from?

Because quote collections are unreliable, and this tool is not willing to put words in someone's mouth on your behalf. Lines circulate for years attached to people who never said them, and once a misattribution is printed onto a card it travels further and is harder to correct. Shipping a built-in quote pack would mean this site generating fabricated attributions at scale, so there is no quote library, no random-quote button and no autocomplete here. You supply both the wording and the name, and the card renders exactly what you typed.

What happens if I leave the attribution blank?

Nothing is drawn. There is no Anonymous, no Unknown, and no em dash left floating on its own line — the attribution line simply does not exist, and the quote block re-centres to use the space. If you do fill it in, it is set on its own line below the quote at a fraction of the fitted quote size, and it wraps the same way the quote does if it is longer than the line length.

Why does my card look different on another device?

No font file is downloaded by this tool, so it can only use typefaces already installed on the device that is drawing. A stack such as Georgia, Times New Roman, Liberation Serif resolves to a different face on macOS, Windows, Linux and Android, and different letterforms have different widths. That changes where lines break and therefore what size the fitter settles on. It is why every measurement here is taken at draw time on the device doing the drawing, rather than assumed in advance. The exported PNG is a fixed bitmap, so once it is saved it looks the same everywhere.

Is my background image uploaded anywhere?

No. The image is read from your device, decoded by your browser, drawn onto a canvas on this page, and encoded back into a file your browser saves locally. There is nowhere to upload it to: this site is a set of static files with no server and no image endpoint, and the whole tool keeps working with the network switched off. It is also why there is no field for an image address from another site — a cross-origin image taints the canvas and the browser then blocks reading the pixels back out, so the download would fail at the last step.

What does the contrast number next to the text colour mean?

It is the WCAG 2.2 contrast ratio between your text colour and the background behind the text — the fill for a solid colour, the midpoint for a gradient, or the average of the actual pixels under the text block when you use a photo with a scrim. The tool states the two thresholds it checks against: 4.5:1, the minimum for body-size text, and 3:1, the minimum for large text. Quote cards are usually set large, so 3:1 is often the applicable line, but the figure and both thresholds are shown so you can judge it yourself rather than being handed a grade.