What % means
It means “per hundred,” exactly like %. In a price, rate, score, or statistic, read 12% as “twelve percent.” The extra width changes layout, not the calculation.
The earliest recognizable ancestor of the percent sign appears in an anonymous Italian arithmetic manuscript—a handwritten math book—from around 1425. Earlier writers used “per cento” (“for a hundred”) or abbreviations such as “p 100” and “p cento.” Pages probably added around 1435 show a looped “pc”; by around 1650, the sign had become two circles side by side, and later its dividing bar slanted. That is the history of the percent sign generally; % is its later East Asian width variant.
Why is % wider than %?
The width is a layout choice, not extra emphasis. In older encodings for East Asian text, basic Latin characters such as % often occupied one display cell while Chinese, Japanese, or Korean characters occupied two. A wide counterpart helped preserve fixed-cell layout and survive conversion to and from those encodings. The two signs mean the same thing; % is the fullwidth compatibility counterpart of %.
Width can still matter to software. NFKC and NFKD compatibility normalization can turn % into %, while NFC preserves the distinction. Normalize when width is only formatting; preserve the original character when exact text identity matters.
Neutral punctuation; its width signals a layout or input convention, not a change in percentage meaning.
Software that compares exact text can treat % and % as different characters.
Don't confuse it with
1Questions people ask
2Does % normalize to %?
Not by default. NFKC and NFKD fold the width distinction to %; software that does not apply compatibility normalization may still distinguish the characters.
Why does % look narrow?
It can. East Asian width is a character classification, while the font and layout engine determine the displayed size; “fullwidth” does not promise a fixed pixel width.
How to type %
%\FF05Codes and encoding1 code points
A visible symbol can contain several code points. JS .length counts UTF-16 units; UTF-8 counts bytes.

