Home / Art & Sprites / Bitmap Font Generator

Bitmap Font Generator

Drop a TTF or OTF font, or a sprite sheet of hand-drawn pixel letters, and get a packed PNG atlas with a BMFont .fnt file. Pick the characters you need, from basic English to the 2,350 common Korean syllables, or paste your game's text to include only the letters it uses. Add an outline, a drop shadow or a gradient, keep pixel fonts crisp, and test the result with your own sentence. Godot, Phaser, libGDX, Cocos, Defold and many more read .fnt directly. Pro adds the XML and JSON formats, several sizes in one go and a LÖVE image font.

Drop a .ttf, .otf or .woff font
Or use a built-in font below
Drop a PNG with letters in a grid
Same-size cells, left to right, top to bottom
top / bottom

Fonts are licensed. Check that yours allows embedding as an image in a game. Most Google Fonts and OFL fonts do.

Zoom Background

Pro · BMFont XML and JSON as well as text, several sizes in one ZIP, and a LÖVE image font. See plans

What a bitmap font is

A bitmap font is a picture of every letter packed into one texture, plus a small file that says where each letter is and how far to move after drawing it. Games use them because they draw fast, look exactly the same on every device and can have outlines, shadows and colours baked in. Pixel art games need them because normal fonts blur when scaled.

The .fnt format

This tool writes the BMFont format made by AngelCode, the most widely supported one. Godot 4 imports .fnt files as fonts directly. Phaser loads them with this.load.bitmapFont (use the XML file from the Pro pack), libGDX with BitmapFont, and Cocos, Defold, MonoGame, PixiJS, HaxeFlixel and many others have loaders. Keep the PNG next to the .fnt with the same name it lists. For Unity, TextMesh Pro makes its own atlas from a TTF; use the character lists from our Localization Manager to keep it small.

Pixel fonts from a sprite sheet

Draw your letters in a grid of equal cells, for example 8 by 8 pixels, with a transparent or solid background. Type the characters in the same order they appear. The tool finds the empty columns of each letter, so a narrow "i" takes less space than a "W", and writes the widths into the .fnt. The baseline row is the pixel row the letters sit on, counted from the top of the cell.

Korean, Chinese and Japanese

Korean has 11,172 possible syllables, but the 2,350 in the KS X 1001 set cover almost all real text. The Chinese set holds the 3,755 most common characters of GB2312. These need large textures, so the tool splits them into several pages when they do not fit. If your game has a fixed script, paste it into the text box and choose "Only my text" to include just the characters you use.

Is my font uploaded?

No. The font and images are read in your browser and never leave your device.