Insert Special Characters
Insert Special Characters
Description
Ever wanted to add a special character while working within the WordPress block editor (Gutenberg) and suddenly find yourself longing for the days of the Classic Editor and the Special Character inserter? Well long no more, the Insert Special Characters plugin is here to ease your publishing woes!
Note: you can display the popover via the ctrl/cmd + o keyboard shortcut.
Development takes place in the GitHub repository.
Technical Notes
- Requires PHP 7.4+.
- Requires WordPress 6.6+
- Issues and Pull requests welcome in the GitHub repository.
Extending
To control the available tabs and characters, developers can filter the data set using the insertspecialcharacters-characters JavaScript (wp.hooks) filter.
For example, to create a character inserter that only provides currency symbols:
wp.hooks.addFilter(
'insertspecialcharacters-characters', // The filter name.
'mycallback', // Our callback namespace.
function( component ) { // The callback function.
// Return the categories/characters to display.
// The data structure is: { category: [ character data ], category2: ... }
return {
"Currency": [
{ "entity": "$", "hex": "", "name": "Dollar Sign", "char": "$" },
{ "entity": "€", "hex": "AC;", "name": "Euro Sign", "char": "€" },
{ "entity": "¢", "hex": "�A2;", "name": "Cent Sign", "char": "¢" },
{ "entity": "£", "hex": "�A3;", "name": "Pound Sign", "char": "£" },
{ "entity": "¥", "hex": "�A5;", "name": "Yen Sign", "char": "¥" },
]
};
}
);
Installation
- Install the plugin via the plugin installer, either by searching for it or uploading a .zip file.
- Activate the plugin.
- Use Insert Special Characters!
Screenshots

Example of special characters selection in the Block Editor.

"Special Characters" option in Paragraph Block menu.

Initial special characters, showing the "Math" character set.

Filtering the special characters via search.

Resulting inserted special character (note focus on special character, rest of window has been blurred).
Faq
When a character is displayed using a font that doesn’t support that character, a default “not defined” glyph from that font is used. The “not defined” glyph in most fonts has the appearance of a rectangular box, or some variation of that.
One example of a font with support for wide range of glyphs is the Noto family by Google Fonts, which can be loaded by the theme to render the missing characters.
Reviews
Easy and useful
By olistic on November 4, 2024
Easy and useful. I like it!
My new favorite plugin! Does just what I need it to do
By LonelyPilgrim on June 21, 2024
As a lover of em dashes, en dashes, diacritics, and typography and Unicode in general, and a pedant for using the precise, proper characters where they are appropriate, this plugin does exactly what I need it to do. It works very similarly to the insert-special-characters feature of MediaWiki's VisualEditor plugin, which I also love. Bravo for this, and please keep up the good work.
Dingbats are back!
By Chaz DeSimone (chazdesimone) on October 7, 2020
Much needed!
By burnuser on October 28, 2019
Thank You! Works perfectly!
By GoddessNYC (goddessprojects) on October 3, 2019
Excellent!
By Steve P (UK) (stevepalmeratwordpress) on September 1, 2019
Great Plugin!!
By tomdavis360 on August 31, 2019
Finally!
By Martin Sauter (martin.sauter) on August 31, 2019
Changelog
1.1.3 – 2024-11-18
- Changed: Update the UI to be more consistent with WordPress core props (@psorensen, @fabiankaegy via #263).
- Changed: Clean up NPM dependencies and update node to v20 (props @Sidsector9, @dkotter via #238).
- Changed: Bump WordPress “tested up to” version 6.7 (props @sudip-md, @sonali886, @godleman, @jeffpaul, @dkotter via #260, #261, #273, #274).
- Security: Bump
expressfrom 4.18.2 to 4.19.2,follow-redirectsfrom 1.15.5 to 1.15.6,ipfrom 1.1.8 to 1.1.9 andwebpack-dev-middlewarefrom 5.3.3 to 5.3.4 (props @dependabot, @iamdharmesh via #254). - Security: Bump
bracesfrom 3.0.2 to 3.0.3,pac-resolverfrom 7.0.0 to 7.0.1,socksfrom 2.7.1 to 2.8.3,wsfrom 7.59 to 7.5.10 and removesip(props @dependabot, @faisal-alvi via #259). - Security: Bump
axiosfrom 1.6.7 to 1.7.7,body-parserfrom 1.20.2 to 1.20.3,expressfrom 4.19.2 to 4.21.0,wsfrom 7.5.10 to 8.18.0,@wordpress/scriptsfrom 27.1.0 to 29.0.0 andwebpackfrom 5.90.0 to 5.94.0 (props @dependabot, @Sidsector9 via #267, #268).
1.1.2 – 2024-01-08
- Added: Support for the WordPress.org plugin preview (props @dkotter, @jeffpaul via #232).
- Fixed: Issue with blocks crashing due to faux caret (props @Sidsector9, @dkotter, @ankitguptaindia via #225).
- Fixed: Issue with characters added to the beginning trimming text from the end (props @Sidsector9, @dkotter, @ankitguptaindia via #225).
- Changed: Bump WordPress “tested up to” version to 6.4 (props @qasumitbagthariya, @jeffpaul, @QAharshalkadu, @ankitguptaindia, @dhanendran, @iamdharmesh via #228).
1.1.1 – 2023-10-17
- Fixed: Address an issue where some blocks would crash due to a missing attribute (props @dkotter via #221).
- Security: Bump
@babel/traversefrom 7.20.5 to 7.23.2 (props @dependabot, @dkotter via #219).
1.1.0 – 2023-10-16
- Added: Show a faux cursor to preserve context (props @Sidsector9, @helen, @ravinderk via #207).
- Added: Check for minimum required PHP version before loading the plugin (props @kmgalanakis, @peterwilsoncc via #210).
- Changed: Bump WordPress “tested up to” version to 6.3 (props @kmgalanakis, @jeffpaul, @peterwilsoncc via #212, #215).
- Fixed: Ensure that when highlighting a special character, the block doesn’t crash (props @jrmd, @dkotter via #204).
- Security: Bump
semverfrom 5.7.1 to 5.7.2 (props @dependabot, @dkotter via #202). - Security: Bump
word-wrapfrom 1.2.3 to 1.2.4 (props @dependabot, @Sidsector9 via #206). - Security: Bump
@cypress/requestfrom 2.88.10 to 3.0.0,cypressfrom 12.8.1 to 13.3.1 and@10up/cypress-wp-utilsfrom 0.1.0 to 0.2.0 (props @dependabot, @dkotter via #213). - Security: Bump
tough-cookiefrom 4.1.2 to 4.1.3 and@cypress/requestfrom 2.88.10 to 2.88.12 (props @dependabot, @ravinderk via #214). - Security: Bump
postcssfrom 8.4.20 to 8.4.31 (props @dependabot, @faisal-alvi via #216).
Further changelog entries can be found in the CHANGELOG.md file.