Valheim · rich-text sign editor

Sign Forge

Build it here, paste it in game. 50 characters. No mods.

An approximation of the in-game look.

0 / 50 characters

        
Saved locally in this browser

My signs

Tag reference

Every character of a tag counts against the 50

Field notes

Observed, not authoritative

These notes and the tag reference above were worked out by building signs in game and reading what came back — not from the game’s source. Most of it has been checked more than once, and several notes correct the written guides. It is still observation, so it can be incomplete, and a patch can make it stale. If a note disagrees with what your sign actually does, your sign is right — corrections are welcome.

Default color is black

Untagged text renders black.

No bold

The sign is drawn in Norsebold, the only cut available to it, so <b> produces no visible change.

Character limit

A sign holds 50 characters and tags count toward the total. <color=yellow> costs 14; <#ff0> costs 6 and renders the same.

Short hex codes

Where both digits of a hex pair match, one can be dropped: <#ff66ff> becomes <#f6f>. A fourth digit sets alpha, so <#0f08> is green at half opacity.

Line breaks

\n costs two characters. A real line break costs two as well, so neither is cheaper; shift-return inserts one here. <br> costs four. \v breaks the line the same way. \r starts a new line at the same height as the one before, so the two overlay. \t is a tab.

Rule color follows tag order

The line drawn by <u> and <s> takes the color that is active when the tag opens and does not change afterwards. <#f00><u> gives a red line; <u><#f00> gives red text with a black one.

Untagged text is fitted to the board

Without a <size> tag the game scales text to fit, up to a ceiling: a single character lands near size 8, and each addition steps it down. The same sentence is larger on one line than split across two.

Sizes are absolute

A <size> value does not scale with that fitting. Measured in game, sizes 5, 7 and 9 render at 14, 19 and 25 pixels on one sign. A capital at 14 spans the board top to bottom, 15 overhangs it, and there is no upper limit.

Runes look broken while typing

Elder Futhark (ᚠ ᚢ ᚱ) renders on a plank, but the in-game edit box draws in a font that has none of it, so every rune shows as a square until the sign is confirmed. Paste them in and trust the plank rather than the box.

The edit box renders your tags

Tags are applied live while typing rather than shown as raw text, so a run can become hard to read — set very small, or colored close to the plank, it can look as though it has disappeared. Usually at least part of it stays visible. Confirm with Enter to see the finished sign.

Closing tags are optional

Where the formatting is meant to run to the end of the sign, the closing tag can be left off: the sign ending closes it. Valheim’s parser accepts that, and each one dropped returns at least four characters — </smallcaps> returns twelve. A closing tag with more text after it still has to stay, or the style carries on into it.

Nearly everything renders

Beyond its own font the sign falls back to the Noto fonts Valheim ships, covering Arabic, Armenian, Bengali, Devanagari, Georgian, Hebrew, Japanese, Korean, Malayalam, Chinese, Thai and emoji. Tested in game: CJK, kana, hangul, Latin Extended, Thai, Hebrew, Arabic and currency all draw. The known exception is the sparkle run between and and come out as boxes.

Emoji

Emoji are not in the sign’s own atlas, but Valheim ships Noto Emoji as a TextMesh Pro fallback, so they render from the game rather than from your machine and look the same for everyone. Being an SDF font they are monochrome and take whatever color tag is in force. With the sign’s edit box open, Win + . inserts one. The bundled font covers emoji through Emoji 15.0 (2022); everything added in 16.0 (2024) and later comes out as a box, and the checker flags those. An emoji built from several codepoints — joined with a ZWJ, given a skin tone, or a flag — is not composed: the sign draws each part as its own symbol.

No lowercase

Lowercase letters are drawn with the capital glyphs, so hi there renders as HI THERE and <uppercase> has no effect. The font maps them rather than lacking them: a character the font genuinely has no entry for falls through to one of the bundled Noto fonts and keeps its own shape, and Latin lowercase does not. Lowercase outside Latin-1 — ā, α, а — does fall through, and stays lowercase. Capitals are wider than the lowercase typed, which affects how much fits. <smallcaps> is the one case tag that does something: it draws what was typed in lowercase as short capitals, so Mead keeps a full-height M above a shorter EAD.