WordPress Plugin: Devowelizer

The Devowelizer plugin for WordPress provides visual profanity filtering, but without censorship or full redaction. It replaces the vowels (and a few other letters) in most “bad language” within your own content and from comments left by visitors. Example: dåmn, whørë, and slût. It comes preconfigured with dozens of bìtçhìn’ patterns that devowelize hundreds of swear words.


Originally developed for use with WordPress v2.x (way back in 2006), the Devowelizer plugin also works with the latest WordPress v4.1.1, and is expected to work properly with any later versions. The plugin also works seamlessly with WordPress MU v1.3.1 through v2.9.2, the final MU development release — either working invisibly and across all blogs or activated on a per-blog basis.

No other plugins are required. It is not necessary to configure the plugin or edit your templates, although as of v1.03 there are now a few options discussed below.


Download the Devowelizer plugin. Duh! You can also pick up a copy directly from the WordPress Plugin Directory.

WordPress (standard)

  1. Copy all the files into the /wp-content/plugins/devowelizer/ folder.
  2. Activate the plugin in the WordPress Plugin Admin panel.
  3. Installation complete!

WordPress MU

(You can follow the steps above for standard WordPress to activate the plugin on a per-blog basis, or do the following to apply the plugin silently to all blogs.)

  1. Copy all the files into the /wp-content/mu-plugins/devowelizer/ folder.
  2. Installation complete!

Usage (again, apologies!)

The word definitions for the Devowelizer can take the form of very basic regular expressions like “bast[ae]rd*”. In Devowelizer’s case, a leading or trailing asterisk is a wildcard used to represent alphanumeric characters plus a hyphen; it is not actually part of the regular expression itself, so “bast[ae]rd*” matches båstård, båstërds, and båstårdìzìng. Asterisks in the middle of the definition work just like one in a standard regex. There are a few select cases of predefined words (mainly forms of the F-word) that use both leading and trailing asterisks in order to catch entire words like ûråbåstrdmûthåfûkkër.

More Examples

  • *f\s*c\s*u\s*k* — catches fûçk, fû çk, and møfûçkr.
  • a[s]+hol* — catches åsshølë and åhølë, but not gasholder or Grassholme.
  • pënìs* — catches pënìs and pënìshëåd, but not terpenism.
  • åssës — catches nothing but åssës, certainly not classes or glasses.

Don’t Blame Me — Blame the BBC

For testing the plugin, here are some colorful excerpts from the BBC’s The Thick of It.

  • “Come the fûçk in or fûçk the fûçk off.”
  • “How much fûçkìng shìt is there on the menu and what fûçkìng flavour is it?”
  • “Allow me to ram it up your shìttër with a lubricated horse çøçk.”
  • “Don’t get sarcastic with me, son. We burned this tight-årsëd city to the ground in 1814. And I’m all for doing it again, starting with you, you frat fûçk. You get sarcastic with me again and I will stuff so much cotton wool down your fûçkìng throat it’ll come out your årsë like the tail on a Playboy bunny.”
  • “If some çûnt can fûçk something up, that çûnt will pick the worst possible time to fûçkìng fûçk it up cause that çûnt’s a çûnt.”
  • “If someone throws shìt at us, we throw shìt back at them. We start a shìt fight. We throw so much shìt at them, that they can’t pick up shìt, they can’t throw shìt, they can’t do shìt.”
  • “Someone actually went out and bought flip flops to give me, and they pasted onto them a fûçkìng pørn picture of a girl sucking a big çøçk.”
  • “You’ve been leaking intelligence to them? You’re the fûçkìng shìttìëst James Bond ever! You’re David fûçkìng Niven!”
  • “Fûçkëtÿ bye.”

Integration with Other Plugins

If you’re a fellow plugin author, you can use the Devowelizer to munge objectionable text other than just the default posts and comments from within your plugin, too. Since you cannot be certain that the blog owner has both plugins installed, simply wrap the use of the Devowelizer with a quick verification, thus ensuring your plugin doesn’t break if the Devowelizer isn’t co-installed:

$string = "Some text that you'd like devowelized, if possible.";
if (function_exists('devowelizer')) {
    $string = devowelizer($string);

New Features Added in v1.03!

I get a huge amount of comment spam, most of it disgustingly filthy but 100% of it caught by Akismet. However, I scan through the recent catches monthly just to ensure that there are no false positives. Because the number of bad words per page can often be in the thousands, the plugin will time out on extremely rare occasions. If that happens to you, or you just don’t want to apply the filter to your admin pages, visit your /wp-admin/options.php page, and change the “devowelize_admin_pages” option to anything other than “yes”. If you change your mind later, just set it back to “yes” (without the quotes). [I intentionally did not create a configuration page because I do not like to clutter up the admin interface with options for every single plugin, especially for such a simple yes/no option.]

Also, pages and posts can now contain [devowelizer] tags to surround words or phrases not covered by the standard word list. Putting something like this in your post:

I think I [devоwelizer]really[/devоwelizer] like this plugin.

Makes it come out like this:

I think I rëållÿ like this plugin.

While this new tag is a very useful feature, please keep in mind that if you disable the plugin, the [devowelizer] tags will be visible within your post. Of course, that same warning applies to almost any plugin that uses special tags in your posts!

If you want to add your own words to the plugin, you should create a new text file called words-custom.txt in the folder in which you installed the Devowelizer plugin. If you modify the predefined words and phrases within words.txt, they will be overwritten during any subsequent upgrades.

The Long Story

Early on, I made the conscious decision to generally NOT censor comments on my blog. I chose instead to munge them slightly to ensure that the content-filtering tools used at my wife’s work wouldn’t ban my website — so at least I could be guaranteed to have at least one regular reader!

On my original MovableType blog, I used the MTMacro plugin by Brad Choate to do a basic search for specific case-sensitive incidences of the most common of the worst swear words and replace the standard five vowels with ones with umlauts — you know, the two little dots over many foreign letters. But, it never really meet my needs because the worst offenders never seemed to standardize their capitalization, dåmn them! For example, in order to handle the three cases of Ãss, ÃSS, and åss, I would have had to create three different macros in order to get the proper case sensitivity. Also, I didn’t want to munge acceptable words such as assume or class. And if someone really wanted to be weird and use ÃsS, åsS, or åSs, the number of individual macros would get ridiculous. As you can see, the Devowelizer catches them all fûkkìn’ easily!

When I eventually moved over to WordPress, I’d looked through the gamut of plugins out there and the closest was the Polite-ifier plugin, but it was still very far from my needs because it couldn’t do the nice clean additions of the umlauts that I wanted. I wanted to use simple regular expressions both on the dictionary of match words AND during the replacement of the matches. Thus, the Devowelizer was born. And, yes, I later moved away from just using umlauts, dåmn it!

In order to protect my åss, I must inform you that this plugin is provided as-is, without any warranty of any kind, express, implied or otherwise, including without limitation, any warranty of merchantability or fitness for a particular purpose. In no event shall I be liable for any special, incidental, consequential or indirect damages of any kind, or any damages whatsoever resulting from loss of; use, data or profits, whether or not advised of the possibility of damage, and on any theory of liability, arising out of or in connection with the use or performance of this plugin.

23 Responses to “WordPress Plugin: Devowelizer”

  1. Izaiah

    What I want to do on my blog, is every few hours take the oldest post and move it to the front of the queue, all automatically. Anyone know if there is a plugin that can do this or a simple way to set up another plugin to do this (use my own feed perhaps)? Thanks.

  2. Just Testing

    Thanks for the fûçkìng great plugin. Not shìttÿ bìtçh møthërfûçk çûnt whørë.

  3. Ozh

    holy shìt! that’s a fûçkìng bloody fun idea! :)

    I’d add more random replacement letters, for more fun: øôò etc…

  4. sid

    sweet – pardon the following test. been looking for a fûçkìng sweet åss plugin like this shìt to mod. I’ll have to sent you the changes an shìt fûçkër

  5. richard

    Quite true. That’s one of the bug fixes being tested in v1.03. Leaving it the way it is in v1.02 is just fine, although it runs a few milliseconds slower.

  6. richard

    Forgot to mention that the new Devowelizer v1.10 was released last week! It can now optionally integrate with the Plugin Output Cache plugin. There were also some minor structural changes so that WordPress can host the plugin and upgrade it automatically.


Leave a Reply

  • (will not be published)