{"id":272456,"date":"2026-01-09T21:25:59","date_gmt":"2026-01-09T21:25:59","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tidy-posts\/"},"modified":"2026-10-20T09:57:26","modified_gmt":"2026-10-20T09:57:26","slug":"tidy-posts","status":"publish","type":"plugin","link":"https:\/\/hr.wordpress.org\/plugins\/tidy-posts\/","author":5696166,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.2.0","stable_tag":"trunk","tested":"7.1.3","requires":"5.6","requires_php":"7.4","requires_plugins":null,"header_name":"Tidy Posts","header_author":"Tidy Posts","header_description":"Professional content management for WordPress. Track SEO data, monitor content freshness, analyze posts, and optimize your blog with performance scoring.","assets_banners_color":"7f95b4","last_updated":"2026-10-20 09:57:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/tidyposts.com","header_author_uri":"https:\/\/tidyposts.com","rating":5,"author_block_rating":0,"active_installs":10,"downloads":951,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"glovema1981","date":"2026-01-09 21:54:29","revision":3436317},"1.0.5":{"tag":"1.0.5","author":"glovema1981","date":"2026-01-23 14:48:40","revision":3445646},"1.0.6":{"tag":"1.0.6","author":"glovema1981","date":"2026-02-09 16:47:05","revision":3457278},"2.0.0":{"tag":"2.0.0","author":"glovema1981","date":"2026-03-15 15:05:58","revision":3483163},"2.1.0":{"tag":"2.1.0","author":"glovema1981","date":"2026-10-20 09:57:26","revision":3756370}},"upgrade_notice":{"2.2.0":"<p>Accuracy and safety update: sorting now covers every page, View links follow your permalinks, scores and counts agree everywhere, and &quot;Mark as Updated Today&quot; is replaced by &quot;Mark as Reviewed&quot;. Recommended for all users.<\/p>","2.1.0":"<p>New features: undo inline SEO edits, edit tooltips on SEO columns, and pagination for post tables. Recommended update for all users.<\/p>","2.0.0":"<p>Major free update. All features now included at no cost: inline SEO editing, bulk actions, dashboard widget, clickable tiles, and more. Recommended update for all users.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3436306,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3436306,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3436322,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3436322,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2","1.0.5","1.0.6","2.0.0","2.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3436306,"resolution":"1","location":"assets","locale":"","width":1920,"height":1080},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3436306,"resolution":"2","location":"assets","locale":"","width":1920,"height":1080},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3436306,"resolution":"3","location":"assets","locale":"","width":1920,"height":1080},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3436306,"resolution":"4","location":"assets","locale":"","width":1920,"height":1080},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3436306,"resolution":"5","location":"assets","locale":"","width":1920,"height":1080},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3436306,"resolution":"6","location":"assets","locale":"","width":1920,"height":1080}},"screenshots":{"1":"Overview dashboard with summary statistics","2":"All Posts tab with performance scores and SEO data","3":"Inline SEO editing with character counter","4":"Dashboard widget with content health score"}},"plugin_section":[262246],"plugin_tags":[255524,19795,246855,186,31034],"plugin_category":[55],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-272456","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-blog-management","plugin_tags-content-audit","plugin_tags-content-freshness","plugin_tags-seo","plugin_tags-seo-audit","plugin_category-seo-and-marketing","plugin_committers-glovema1981"],"banners":{"banner":"https:\/\/ps.w.org\/tidy-posts\/assets\/banner-772x250.png?rev=3436322","banner_2x":"https:\/\/ps.w.org\/tidy-posts\/assets\/banner-1544x500.png?rev=3436322","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tidy-posts\/assets\/icon-128x128.png?rev=3436306","icon_2x":"https:\/\/ps.w.org\/tidy-posts\/assets\/icon-256x256.png?rev=3436306","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tidy-posts\/assets\/screenshot-1.png?rev=3436306","caption":"Overview dashboard with summary statistics"},{"src":"https:\/\/ps.w.org\/tidy-posts\/assets\/screenshot-2.png?rev=3436306","caption":"All Posts tab with performance scores and SEO data"},{"src":"https:\/\/ps.w.org\/tidy-posts\/assets\/screenshot-3.png?rev=3436306","caption":"Inline SEO editing with character counter"},{"src":"https:\/\/ps.w.org\/tidy-posts\/assets\/screenshot-4.png?rev=3436306","caption":"Dashboard widget with content health score"},{"src":"https:\/\/ps.w.org\/tidy-posts\/assets\/screenshot-5.png?rev=3436306","caption":""},{"src":"https:\/\/ps.w.org\/tidy-posts\/assets\/screenshot-6.png?rev=3436306","caption":""}],"raw_content":"<!--section=description-->\n<p>Tidy Posts helps you keep your blog content in good shape. It gives you a clear overview of your published posts, highlights what needs attention, and makes it easy to take action.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Performance Scoring<\/strong> - Every post gets a score out of 100 based on SEO completeness, content length, and freshness. Select any score to see exactly why it was given.<\/li>\n<li><strong>SEO Audit<\/strong> - See which posts have custom SEO titles and meta descriptions, which rely on your SEO plugin's auto-generated versions, and which have none at all.<\/li>\n<li><strong>Content Freshness Tracking<\/strong> - Identify posts that haven't been updated or reviewed in months or years.<\/li>\n<li><strong>Inline SEO Editing<\/strong> - Select Edit (or double-click) on any SEO title or meta description to change it directly in the table. A live counter shows how your text compares with the recommended length, and the post's score updates as soon as you save.<\/li>\n<li><strong>Undo Inline Edits<\/strong> - Changed your mind? Undo the last inline SEO edit with a single click.<\/li>\n<li><strong>Mark as Reviewed<\/strong> - Checked an older post and it is still accurate? Record the review without changing the post's \"last modified\" date. Reviewed posts are not flagged as old for six months.<\/li>\n<li><strong>Bulk Actions<\/strong> - Select posts on one page or across every page of a report, then mark them as reviewed or move them to draft. Moving to draft explains the consequences first and can be undone for 30 minutes.<\/li>\n<li><strong>Sorting and Pagination<\/strong> - Sort any column across the whole report, not just the current page, and choose how many posts to show per page (25, 50, 100, 200 or 500). Your choice is remembered.<\/li>\n<li><strong>Clickable Overview Tiles<\/strong> - Overview tiles link directly to the relevant report.<\/li>\n<li><strong>Dashboard Widget<\/strong> - A content health score and priority actions on your WordPress dashboard. Every figure matches the report it links to.<\/li>\n<li><strong>CSV Export<\/strong> - Export any report as a CSV file containing the same data, scores and sort order you see on screen.<\/li>\n<li><strong>Support Tab<\/strong> - Quick access to documentation and support at tidyposts.com.<\/li>\n<li><strong>Mobile Responsive<\/strong> - Full functionality on tablets and mobile devices.<\/li>\n<\/ul>\n\n<p><strong>SEO Plugin Support:<\/strong><\/p>\n\n<p>Tidy Posts works with Yoast SEO and Rank Math. It detects which plugin you have installed and adapts its queries and display accordingly. Without an SEO plugin, Tidy Posts still tracks content freshness and word counts.<\/p>\n\n<p><strong>Report Tabs:<\/strong><\/p>\n\n<ul>\n<li><strong>Overview<\/strong> - Summary statistics and a getting-started guide.<\/li>\n<li><strong>All Posts<\/strong> - Every published post with SEO data, word count, performance score, and days since last update.<\/li>\n<li><strong>Needs Attention<\/strong> - Posts using an auto-generated SEO title, or not updated or reviewed for over 6 months.<\/li>\n<li><strong>Needs Manual SEO<\/strong> (or <strong>Missing SEO Data<\/strong> without an SEO plugin) - Posts without a custom SEO title or meta description.<\/li>\n<li><strong>Old Content<\/strong> - Posts not updated or reviewed for over 6 months, oldest first.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>tidy-posts<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Navigate to the 'Tidy Posts' menu item in your WordPress admin sidebar.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20seo%20plugins%20are%20supported%3F\"><h3>Which SEO plugins are supported?<\/h3><\/dt>\n<dd><p>Tidy Posts supports Yoast SEO (free and premium) and Rank Math (free and pro). Support for additional SEO plugins may be added in future versions.<\/p><\/dd>\n<dt id=\"does%20tidy%20posts%20modify%20my%20content%3F\"><h3>Does Tidy Posts modify my content?<\/h3><\/dt>\n<dd><p>No. Tidy Posts never changes your post content. Inline editing updates SEO titles and meta descriptions only when you choose to save a change. The only bulk action that changes a post is \"Move to Draft\", which asks you to confirm first and can be undone.<\/p><\/dd>\n<dt id=\"what%20does%20the%20performance%20score%20measure%3F\"><h3>What does the performance score measure?<\/h3><\/dt>\n<dd><p>The score is based on four factors: SEO title (custom, auto-generated or missing, and its length), meta description (custom, auto-generated or missing, and its length), content freshness (days since the post was last updated or reviewed), and word count. Select a score in any table to see the full breakdown.<\/p><\/dd>\n<dt id=\"why%20does%20an%20auto-generated%20seo%20title%20still%20lower%20the%20score%3F\"><h3>Why does an auto-generated SEO title still lower the score?<\/h3><\/dt>\n<dd><p>Yoast SEO and Rank Math create a title from a template when you have not written one, so the post is not missing a title. Auto-generated titles and descriptions therefore receive a small deduction (10 and 15 points), much less than a genuinely missing field (30 points). A custom title written for the search results usually performs better on your most important posts.<\/p><\/dd>\n<dt id=\"what%20does%20%22mark%20as%20reviewed%22%20do%3F\"><h3>What does \"Mark as Reviewed\" do?<\/h3><\/dt>\n<dd><p>It records that you have checked the post and it is still accurate. Tidy Posts stores the review date separately and does not change the post's \"last modified\" date, so search engines are not given a misleading freshness signal. Reviewed posts are not counted as old for six months from the review date, and show a \"Reviewed\" badge in the tables.<\/p><\/dd>\n<dt id=\"what%20happened%20to%20%22mark%20as%20updated%20today%22%3F\"><h3>What happened to \"Mark as Updated Today\"?<\/h3><\/dt>\n<dd><p>It was replaced by \"Mark as Reviewed\" in version 2.2.0. The old action changed each post's \"last modified\" date without changing its content. Search engines can treat this as a false freshness signal, and it also hid the post from the Old Content report. \"Mark as Reviewed\" gives you the same tidy-up without touching your post dates.<\/p><\/dd>\n<dt id=\"is%20%22move%20to%20draft%22%20safe%3F\"><h3>Is \"Move to Draft\" safe?<\/h3><\/dt>\n<dd><p>Moving a post to draft takes it offline straight away and its address will show a \"page not found\" error until it is published again. Tidy Posts explains this before you confirm. You can undo the action for 30 minutes from the notice that appears afterwards, which republishes the posts with their original dates. Some social sharing or newsletter plugins may treat a republished post as new, so check their settings if you use one.<\/p><\/dd>\n<dt id=\"why%20did%20my%20scores%20or%20health%20grade%20change%20after%20updating%20to%202.2.0%3F\"><h3>Why did my scores or health grade change after updating to 2.2.0?<\/h3><\/dt>\n<dd><p>Version 2.2.0 counts words more accurately (ignoring block editor code and HTML), treats auto-generated SEO fields as auto-generated rather than missing, and bases the dashboard health grade on the average score of your posts. Scores now match across the tables, overview, dashboard widget and CSV export, so some figures will have moved.<\/p><\/dd>\n<dt id=\"can%20i%20use%20tidy%20posts%20without%20an%20seo%20plugin%3F\"><h3>Can I use Tidy Posts without an SEO plugin?<\/h3><\/dt>\n<dd><p>Yes. Without Yoast SEO or Rank Math, Tidy Posts still tracks content freshness, word counts, and performance scores. SEO-specific columns will show as missing since there is no SEO data to read, and inline editing is not available.<\/p><\/dd>\n<dt id=\"what%20does%20tidy%20posts%20store%20in%20my%20database%3F\"><h3>What does Tidy Posts store in my database?<\/h3><\/dt>\n<dd><p>Tidy Posts stores its version number, install date, your posts-per-page preference, a cached word count for each post and any \"Mark as Reviewed\" dates. All of this is removed if you delete the plugin. It does not create any custom database tables, and SEO plugin data is never removed.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20support%3F\"><h3>Where can I get support?<\/h3><\/dt>\n<dd><p>Visit <a href=\"https:\/\/tidyposts.com\/support\">tidyposts.com\/support<\/a> for documentation and support.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Fixed: Sorting a column now sorts the whole report, not just the posts on the current page<\/li>\n<li>Fixed: \"View\" links now use your site's permalink settings, so they no longer lead to \"page not found\" errors on sites using dates or categories in their URLs<\/li>\n<li>Fixed: Yoast SEO auto-generated titles and descriptions were shown as \"Auto-Generated\" in the table but counted as missing in the score, overview tiles and dashboard grade. They are now treated consistently everywhere<\/li>\n<li>Fixed: Rank Math auto-generated descriptions were always shown as 0 on the overview<\/li>\n<li>Fixed: Dashboard widget figures now match the report tabs they link to<\/li>\n<li>Fixed: Character counts and length warnings now count accented letters and symbols such as \u00a3 and \u00e9 correctly<\/li>\n<li>Fixed: Word counts no longer include block editor code and HTML. Counts are cached and refreshed when a post is saved<\/li>\n<li>Fixed: Inline edits to Yoast SEO fields now show straight away, as Tidy Posts reads the same values it saves<\/li>\n<li>Fixed: The CSV export could interfere with other plugins' export links in the admin area<\/li>\n<li>Changed: \"Mark as Updated Today\" is replaced by \"Mark as Reviewed\", which records a review without changing the post's \"last modified\" date<\/li>\n<li>Changed: The dashboard health grade is now the average performance score of your posts<\/li>\n<li>Changed: Needs Attention now flags auto-generated SEO titles and age only. Posts needing a custom meta description are listed under Needs Manual SEO<\/li>\n<li>Changed: Needs Manual SEO now includes posts with an auto-generated meta description for both Yoast SEO and Rank Math<\/li>\n<li>Added: Visible Edit button on SEO title and meta description cells (double-click still works)<\/li>\n<li>Added: Save and Cancel buttons for inline edits. Clicking away no longer saves a change without asking<\/li>\n<li>Added: Score, badges and score breakdown update immediately after an inline edit or undo<\/li>\n<li>Added: Expandable score breakdown showing why each post received its score<\/li>\n<li>Added: Character counter shows your length against the recommended range (for example \"52 \/ 60\")<\/li>\n<li>Added: Confirmation explaining the effect of \"Move to Draft\", with a 30-minute undo that restores original dates<\/li>\n<li>Added: Select posts across every page of a report. Selections are kept when you change page<\/li>\n<li>Added: Posts-per-page choice is remembered<\/li>\n<li>Added: CSV export now matches the screen, including scores, score factors, real permalinks, field status and your current sort order<\/li>\n<li>Improved: Messages appear as WordPress notices and are announced to screen readers, replacing browser pop-up boxes<\/li>\n<li>Security: Inline edits, undo and bulk actions now check that you can edit each individual post<\/li>\n<li>Security: CSV export protects against spreadsheet formula injection<\/li>\n<li>Security: Dashboard widget output is escaped<\/li>\n<li>Improved: Deleting the plugin now also removes its install date, preferences, cached word counts and review dates<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Added: Undo button for inline SEO edits - revert the last change to an SEO title or meta description with one click<\/li>\n<li>Added: Tooltip indicators on SEO Title and Meta Description column headers to show that double-click editing is available<\/li>\n<li>Added: Pagination controls for post tables with configurable posts per page (25, 50, 100, 200, or 500)<\/li>\n<li>Added: Page navigation with first, previous, next, and last page links<\/li>\n<li>Improved: Post count display now shows the current range (e.g. \"Showing 1-100 of 350 posts\")<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Major update: All features now included in the free plugin<\/li>\n<li>Added: Inline SEO editing (double-click SEO title or meta description columns)<\/li>\n<li>Added: Bulk actions (mark as updated, move to draft)<\/li>\n<li>Added: Dashboard widget with content health score, stats, and priority actions<\/li>\n<li>Added: Clickable overview tiles linking to relevant report tabs<\/li>\n<li>Added: Support tab linking to tidyposts.com\/support<\/li>\n<li>Removed: Freemius SDK (significantly reduced plugin size)<\/li>\n<li>Improved: Cleaner, lighter codebase<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Removed Freemius SDK for WordPress.org compliance<\/li>\n<li>Added dismissible upgrade banner<\/li>\n<li>Plugin size reduced by 98%<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Initial release on WordPress.org<\/li>\n<\/ul>","raw_excerpt":"Content management for WordPress. Track SEO data, monitor content freshness, analyse posts and optimise your blog with performance scoring.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/272456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=272456"}],"author":[{"embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/glovema1981"}],"wp:attachment":[{"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=272456"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=272456"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=272456"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=272456"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=272456"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=272456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}