Deskripsyon
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 (implementContentPolisher\Rules\RuleInterfaceor extendAbstractTextRule).content_polisher_content_sources— check more text than the post content, such as custom fields (implementContentPolisher\Sources\ContentSourceInterface, 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 aContentPolisher\Proofreader\ProofreaderInterfaceengine; its suggestions appear as review-only issues.content_polisher_available_features,content_polisher_feature_enabled— features provided by add-ons (ContentPolisher\Features\FeatureManager).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.
Mga Screenshot




Pag-install
- In Plugins Add New, search for “Content Polisher” and click Install Now, then Activate. Or upload the ZIP in Plugins Add New Upload Plugin.
- Freemius asks whether you want to opt in to notifications and diagnostics. Choose Allow & Continue or Skip: both are fine.
- Go to Content Polisher Settings to choose the content types and language, then run your first scan from Content Polisher.
To add Content Polisher Pro, buy it from Content Polisher Add-Ons, then upload the content-polisher-pro ZIP like any plugin and activate it. Keep Content Polisher active: Pro requires it.
FAQ
-
Will it break my HTML or my blocks?
-
No. Content Polisher never re-writes markup: it edits text between tags only and keeps every other byte exactly as it was. Block markup is checked so that edited blocks stay valid.
-
Is my content sent anywhere?
-
No. Scans and fixes run entirely on your server. Content Polisher never sends post content to an external service. See “External services” above for the optional Freemius opt-in.
-
Do I need an account or a license?
-
No. Content Polisher works without an account, a license or an API key. A license is only needed for the optional Content Polisher Pro add-on.
-
Does it check custom fields (ACF)?
-
Content Polisher checks the post content. Content Polisher Pro also checks the text fields of Advanced Custom Fields (and Secure Custom Fields) in posts, ACF blocks and options pages, with the same preview, history and undo, and includes them in AI proofreading. When ACF is active, Settings Content sources shows this option.
-
Who can use it?
-
Editors and administrators (users who can edit other users’ posts). Each change also requires permission to edit that specific post. Settings require the
manage_optionscapability. -
What happens to Pro if I deactivate Content Polisher?
-
Content Polisher Pro needs Content Polisher. While Content Polisher is inactive, Pro does nothing and shows a notice; nothing breaks. Your Pro settings are kept.
-
What happens when I uninstall the plugin?
-
Settings are removed. Scan results and the change history are removed only if you enabled Delete all data in Settings Advanced. Your posts are never deleted. Content Polisher Pro data is removed only when Content Polisher Pro itself is uninstalled.
Mga Review
Wala pang reviews para sa plugin na ito.
Mga Contributor at Developer
Ang “Content Polisher – Content Quality & Cleanup” ay open source software. Ang mga sumusunod na tao ay nag-ambag sa plugin na ito.
Mga ContributorIsalin ang “Content Polisher – Content Quality & Cleanup” sa iyong wika.
Interesado sa development?
Tingnan ang code, i-check ang SVN repository, o mag-subscribe sa development log sa pamamagitan ng RSS.
Changelog
0.3.0
- New: check the post you are editing in the block editor, with Fix, Fix all safe issues and Ignore, and a summary in the pre-publish panel. Fixes are part of the editor’s undo history.
- New: WP-CLI commands
wp content-polisher scan|status|issues|fix|history|undo, with--fail-onexit codes for CI checks. - Improved: a comma or semicolon moved to the next word (“sunset ,with”) is fixed in one step (“sunset, with”).
- Fix: a missing space after a period was not reported when the next word looks like a domain ending (“once.It”, “here.In”).
- New for add-ons: the
content_polisher_scan_post_contentfilter lets a page builder add-on check the builder’s own data instead of the generated post content.
0.2.0
- Initial release.
