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
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.
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.
-- dash, spaced hyphens between words in Ukrainian, Russian and French, non-breaking space before ; : ! ? in French.<p></p>, <p> </p>, empty paragraph blocks.<br><br> (suggestion only).Content languages: English, Ukrainian, Russian, French. Interface languages: English, French, Ukrainian, Russian.
pre, code, script, style, code blocks, custom HTML blocks and code shortcodes are skipped.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 is complete on its own. An optional add-on, Content Polisher Pro, adds:
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.
Freemius (https://freemius.com) — this plugin includes the Freemius SDK, which manages purchases, licenses and updates of the optional Content Polisher Pro add-on.
No other external service is used by this plugin.
content_polisher_rules — add rules (implement ContentPolisher\Rules\RuleInterface or extend AbstractTextRule).content_polisher_content_sources — check more text than the post content, such as custom fields (implement ContentPolisher\Sources\ContentSourceInterface, or SiteContentSourceInterface for 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 (default manage_options).content_polisher_proofreader — provide a ContentPolisher\Proofreader\ProofreaderInterface engine; 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 (default edit_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.