Neatbo.

Edit TrueType font names

Rewrite explicit internal identities in a supported static TTF while preserving glyph and other table bytes and rebuilding checksums.

Browser-local processingInputUnsigned static glyf/loca TrueType plus four explicit namesOutputEdited TTF and complete name/table JSON/CSVUp to 20 MiB per file · File limit: 1
  1. 1Add input
  2. 2Adjust settings
  3. 3Get your result

Tool input and files are processed in this browser without being uploaded.

Your input

Inputs are kept temporarily in this tab when switching tools. Refreshing or closing clears them; large results may need to be regenerated.

⌘ / Ctrl + Enter to run

or drag and drop them here

Files stay on this device. Your originals stay unchanged.

Up to 20 MiB per file · File limit: 1

    Options

    Complete the required options first. You can keep the defaults for the rest.

    Preparing the tool…

    Before you start

    Select one static, unsigned glyf/loca TrueType font and enter four explicit internal identities. Edit every supported existing name record, preserving style names, glyphs and other tables. Download edited.ttf and a complete change report.

    How to use this tool

    1. Keep the original and confirm that it is a supported unsigned static TTF.
    2. Enter all four internal names explicitly; changing the filename is a separate operation.
    3. Run and inspect every edited-record count and unchanged-table evidence.
    4. Download edited.ttf plus complete JSON/CSV; assess installation and application behavior separately.

    Supported inputs and limits

    One sfnt 0x00010000 TrueType original, at most 20 MiB, with head/name/glyf/loca/maxp/cmap/hhea/hmtx. At most 256 sorted unique aligned tables. Every table checksum and the complete 0xB1B0AFBA checksum are checked; directory bounds, head/maxp and loca ranges are validated.

    Name formats 0 and 1 only, with at most 4,096 sorted unique records and 1,024 LangTags. Every stored name or language string is at most 8,192 bytes; original and rebuilt distinct string pools are each at most 65,535 bytes. Exact and substring source string sharing is supported.

    Existing IDs 1/3/4/6/16/18/21 are edited. Existing style IDs 2/17/22, copyright, license and all other names remain unchanged. Family, full name, PostScript name and unique ID are four explicit 1–63 printable ASCII strings; PostScript excludes whitespace and [](){}<>/%. No names or style metadata are inferred.

    Selected Unicode platform 0 encodings 0–4 and Windows platform 3 encodings 0/1/10 use strict UTF-16BE. Mac platform 1 encoding 0 writes exact ASCII; the old MacRoman value remains null with raw hex. Unknown unselected codecs remain opaque; an unknown selected codec refuses the whole font. Malformed known Unicode also refuses unselected records.

    Every format-1 LangTag is preserved, with RFC 5646 syntax checks including private use and grandfathered forms. No IANA registration or canonicalization is promised. Version-0 custom platforms 240–255 may retain high language IDs.

    Only name is rebuilt; head.checkSumAdjustment changes to repair the global checksum. Every other table is byte-identical. Container offsets, gaps and padding may change. Complete JSON keeps all old/new name bytes, language records and table offsets/SHA256; complete CSV protects formula-leading cells.

    Filename at most 512 UTF-16 units; complete JSON plus safe CSV at most 16 MiB. An incremental report lower-bound guard can refuse before allocating an oversized full report. Edited-font 21 MiB and combined 37 MiB allocation guards are dominated by source/string/report limits; no independent exact ceiling is promised.

    DSIG, variable tables including fvar/avar/STAT/gvar/cvar/HVAR/VVAR/MVAR, CFF/CFF2, TTC, WOFF and WOFF2 are refused. No font loading, installation, glyph bytecode execution, rendering, style inference or full OpenType semantic validation. OS caches and applications may still group or reject edited fonts; compatibility and coexistence are not guaranteed. Table cells are previews of at most 2,000 UTF-16 units.

    Worked example

    Example input

    Controlled 960-byte static TTF with two glyphs and supported original identities.
    Example options
    {"family":"New","fullName":"aNew","postScript":"Review","uniqueId":"Different"}

    Example output

    All existing supported identity records changed; all glyphs and other non-name tables preserved; checksums rebuilt.

    When something does not work

    Unsupported structure, malformed names or a budget breach refuses the entire font and creates no download. Choose a supported original or valid explicit identities, then rerun. Cancellation discards partial outputs; the same original can be processed in a fresh Worker.

    Frequently asked questions

    Will renamed fonts install as separate families?

    Internal names change, but OS caches, application rules, style metadata and unsupported tables may affect grouping. Installation, cache behavior and coexistence are not guaranteed.

    Are glyphs recompiled or rendered?

    No. Glyph, cmap, metric and other non-name table bytes are preserved. Only name and the head checksum adjustment change; the tool never loads or executes a font.

    Documentation & further reading

    Related tools