Content Polisher – Content Quality & Cleanup Wordpress Plugin - Rating, Reviews, Demo & Download
Plugin Description
Content Polisher checks the text of your posts, pages and public custom post types for small mistakes that are easy to miss: double spaces, spaces before punctuation, missing spaces after punctuation, wrong dashes, empty paragraphs and duplicate line breaks.
Every issue is shown with a clear Before / After preview. Fix issues one by one, or fix all safe issues of a post at once. Anything that could be intentional is only suggested and waits for your review. Every change is backed up and can be undone from the History page.
Everything runs on your server. Content Polisher works without an account, an API key or a connection to any external service.
Documentation: contentpolisher.com/docs
How it works
- Open Content Polisher and click Scan Website.
- Review the issues, grouped by type, with a Before / After preview.
- Click Fix on an issue, or Fix safe issues in this post.
- Changed your mind? Click Undo, in the notice or on the History page.
Check while you write
In the block editor, the Content Polisher panel in the post sidebar checks the post you are editing — including unsaved changes — with the same rules. Fix issues one by one or all safe issues at once; fixes change the blocks in the editor, so Ctrl+Z undoes them and saving the post keeps them. Before publishing, the pre-publish panel shows how many issues are left.
Command line (WP-CLI)
Scan, list issues, fix and undo from the command line, e.g. in a deployment or CI check: wp content-polisher scan --fail-on=safe --user=admin exits with code 1 when safe fixes are found. Commands: scan, status, issues, fix, history, undo (see wp help content-polisher). They use the same permissions, history and undo as the dashboard.
Rules
- Double spaces — “Hello world” “Hello world”.
- Space before punctuation — “Hello , world” “Hello, world”. In French, the space before ; : ! ? is correct and is kept.
- Missing space after punctuation — “Hello,world” “Hello, world”.
- Typography —
--dash, spaced hyphens between words in Ukrainian, Russian and French, non-breaking space before ; : ! ? in French. - Empty paragraphs —
<p></p>,<p> </p>, empty paragraph blocks. - Duplicate line breaks —
<br><br>(suggestion only).
Content languages: English, Ukrainian, Russian, French. Interface languages: English, French, Ukrainian, Russian.
Safe by design
- Only the visible text is changed. Tags, attributes, links, shortcodes and block markup are never modified.
- Code is never touched:
pre,code,script,style, code blocks, custom HTML blocks and code shortcodes are skipped. - URLs, e-mail addresses, domains, file names, numbers and abbreviations are recognised and left alone.
- Gutenberg blocks stay valid: text is edited only in blocks whose content is stored as HTML.
- Pages built with Elementor, Beaver Builder, SiteOrigin, Brizy, Oxygen, Bricks or Thrive Architect are skipped, because their content is stored elsewhere (Content Polisher Pro checks Elementor pages through their widgets). Divi and WPBakery text is checked without touching shortcode attributes.
- A backup of the original content is stored before every change; WordPress revisions are created as usual.
- Undo never overwrites later edits: if a post was changed after the fix, you are asked first.
- Posts open in the editor by another user are skipped. Large sites are scanned in small batches.
Multilingual sites
With the language set to Automatic, every post is checked in its own language: from Polylang or WPML when available, otherwise detected from the text, otherwise the site language. Language-specific typography is skipped for other languages rather than applying the wrong conventions.
Content Polisher Pro
Content Polisher is complete on its own. An optional add-on, Content Polisher Pro, adds:
- duplicate word detection (“this is is”), advanced typography (typographic quotes, ellipses, finer French spacing) and extended HTML checks;
- fixing all safe issues of the whole site in one batched, undoable operation;
- checking Advanced Custom Fields: Text, Text Area and WYSIWYG fields of posts, ACF blocks and options pages, including those inside Repeater, Group and Flexible Content, with AI proofreading of those fields;
- checking pages built with Elementor: the text of their widgets, including Elementor Pro and V4 atomic widgets;
- on-demand AI proofreading with your own Anthropic or OpenAI API key;
- CSV exports of scan results and of the full change history.
Learn more at contentpolisher.com/pro. The add-on is installed next to this plugin and extends it; this plugin contains no locked features. Upgrade links appear only on Content Polisher’s own screens.
External services
Freemius (https://freemius.com) — this plugin includes the Freemius SDK, which manages purchases, licenses and updates of the optional Content Polisher Pro add-on.
- After activation, Freemius asks whether you want to opt in to receive security and feature notifications and to share basic, non-sensitive diagnostic data (site URL, WordPress, PHP and plugin versions, active plugins and theme, admin name and e-mail). Nothing is sent if you click Skip, and the plugin works exactly the same.
- You can change your choice at any time from the plugins list or the Account page.
- Post content is never sent to Freemius.
- Terms: https://freemius.com/terms/ — Privacy policy: https://freemius.com/privacy/
No other external service is used by this plugin.
For developers
content_polisher_rules— add rules (implementContentPolisherRulesRuleInterfaceor extendAbstractTextRule).content_polisher_content_sources— check more text than the post content, such as custom fields (implementContentPolisherSourcesContentSourceInterface, orSiteContentSourceInterfacefor text that belongs to no post); each piece of text is fixed, recorded and undone on its own.content_polisher_site_capability— capability needed to fix site-wide text such as options pages (defaultmanage_options).content_polisher_proofreader— provide aContentPolisherProofreaderProofreaderInterfaceengine; its suggestions appear as review-only issues.content_polisher_available_features,content_polisher_feature_enabled— features provided by add-ons (ContentPolisherFeaturesFeatureManager).content_polisher_loaded(action) — Content Polisher is booted; add-ons register their hooks here.content_polisher_categories,content_polisher_dashboard_config,content_polisher_settings_sections,content_polisher_dashboard_toolbar,content_polisher_history_actions,content_polisher_enqueue_assets— extend the screens.content_polisher_editable_blocks,content_polisher_protected_blocks,content_polisher_protected_shortcodes— which content may be edited.content_polisher_capability— capability to use the plugin (defaultedit_others_posts).content_polisher_post_types,content_polisher_post_statuses,content_polisher_post_language,content_polisher_scan_limit,content_polisher_exclude_page_builders,content_polisher_page_builder_meta,content_polisher_scan_post_content,content_polisher_upgrade_url.
Screenshots
Scan results: issues grouped by type, with a Before / After preview and one-click fixes.
History: every change is listed and can be undone.
Settings: content types, language, rules and exclusions.
Check while you write: the Content Polisher panel in the block editor.
