Home / Plugins / Broken Content Reporter

Freev2.0.0 · updated Oct 1, 2026 · GPL · no Pro version

Broken Content Reporter: Your readers already found it, let them tell you

A free WordPress plugin that turns a dead download, a missing image or a typo into a two-click report. A button added after your posts or wherever you place it, a short dialog, no account for the reader. The report lands in your dashboard and your inbox with the page it came from already attached.

A guide with a download that returns 404 and a Report an issue button; the report dialog with five issue tiles, and the Reports widget in the dashboard where the new report appears on top.

How do you find out that something is broken?

A crawler is the usual answer, and it is a good one for half the problem. It walks your site on a schedule and reports what returns an error. Dead links, missing files, server timeouts.

The other half never returns an error. A PDF still downloads, but it is last year’s version. A link resolves with a friendly 200 to a domain that now sells something else. An embed loads an empty player. A screenshot shows an interface that was redesigned two releases ago. To a crawler all of that looks healthy.

A person notices it immediately. The trouble is what happens next: they have no easy way to tell you, so most of them simply leave. A contact form means finding it, describing which page they were on, and waiting for a reply they do not want.

This plugin closes that gap. A button on the page, a dialog with five tiles, send. The page address travels with the report, so nobody has to explain where they were, and the reader gets a clear thank-you instead of a notice that disappears.

It does not replace a link checker. It covers the half a link checker cannot see.

This is what it looks like

Reports in admin: 0

Reports in admin: 0
yoursite.com/guides/setup-manual/
Setup manual (PDF, 4.2 MB)files.example.com/setup-manual-v3.pdf404 Not found
Something not working?Spotted a broken link, a missing image or a download that won’t start? Tell us and we’ll fix it.

The reader side and the admin side of the same report: four styles, a light or dark dialog, the thank-you and the unread counter. Every control here is a real setting in the plugin.

New in 2.0

Version 2.0 rebuilds the plugin around the reader. Your settings and reports from 1.x are taken over, and the shortcode from version 1 keeps working.

Shows up by itself

Before or after the content of posts, pages or any public post type, or as a floating button in the corner. Hidden per post with one switch.

Four styles

Button, outline button, text link or a box with heading and text; accent color, corners, light, dark or theme-colored dialog.

A better dialog

Five issue tiles, a thank-you state and a bottom sheet on phones. Your own issue types with icon, order and on/off switch.

Live preview

Settings moved to Reports, Settings, with a preview of the button and the dialog that follows every change.

Works on cached pages

Reports go through the REST API without a page nonce. Spam is stopped by a trap field, a fill time, a wait time and a daily limit.

Dashboard and privacy

A dashboard widget, several notification addresses, export and erase per email, automatic deletion after a number of days.

How it works

Put the button where things break

Reports, Settings, Placement: after or before the content of posts, pages or any public post type, or as a floating button in the corner. Prefer one spot? Leave placement off and use the "Report Issue (LinkSentry)" block or the [linkbrco] shortcode. Four styles: a button, an outline button, a quiet text link, or a box with a heading and a line of your own. Button and link take the size of the text around them; a switch in the editor sidebar hides the button on single posts.

The four styles of the report control: a filled button, an outline button and a text link, each reading Report an issue with a flag icon, and a box with a flag icon, the heading Something not working?, a line of text and a Report an issue button.
Button, outline, text link or a box with your own heading and text.

The reader sends it in five seconds

A dialog opens with five tiles: broken link, broken download, missing image, typo or wrong info, something else. Details and email are optional, required or hidden, as you choose, and a consent checkbox can link your privacy policy. It is the native dialog element with keyboard navigation, no jQuery, no account. The page address is attached for the reader, and a clear thank-you replaces the form.

The report dialog over a guide: Report a problem on /home-network-setup/, What is wrong with five tiles, Broken download selected, a details field reading The checklist PDF returns a 404, an optional email field and the buttons Cancel and Send report.
Five tiles, details and email optional. The page address travels with the report.

On phones it is a bottom sheet

Below 600 pixels the dialog slides up from the bottom of the screen. The issue types become chips, the send button spans the full width and the sheet keeps clear of the notch. Nobody has to pinch to report a broken link.

A phone showing the report form as a bottom sheet over a post: Report a problem on /demo-post/, the issue types as chips with Broken download selected, the optional details and email fields and a full-width Send report button.
Below 600 px the dialog slides up from the bottom, with large tap targets.

Make it look like your site

Accent color, corners, flag icon on or off, a light, dark or theme-colored dialog, and optional font sizes. Fonts and text color come from your theme, and the button text switches between black and white for contrast. Add your own issue types, rename, reorder or switch them off. The preview next to the settings shows the button and both states of the dialog before you save.

The settings screen under Reports, Settings: button style, flag icon, accent color, corners and dialog colors on the left, and a live preview of the button and the report dialog with Form and Sent tabs on the right.
Every change shows up in the preview before you save.

The report lands in your dashboard

Every report lists the page, the issue type, the details and the reader's email, with links to the page and to its editor. A red counter on the menu shows what you have not opened, a dashboard widget shows the unread reports, the most reported pages and the latest ones. The email goes to one or more addresses; reply to it and you answer the reader.

What it does not do

This is the part most plugin pages leave out.

It does not crawl your site. There is no scheduled scan and no report you did not ask for. It carries what a human noticed, nothing else.

It does not fix anything. It tells you where to look and lets you answer the reader. The repair is still yours.

It asks readers for nothing. No account, no login, no cookies. Details and email are optional unless you make them required.

It keeps no plain IP addresses. The wait time per visitor needs to recognize a repeat sender, so only a hashed value is used. The fingerprint and the browser details can be switched off.

It needs no outside service. No tracking, no telemetry. The optional captcha, reCAPTCHA v2 or hCaptcha, is the only external service, it is off by default and loads only when a reader opens the dialog.

It does not delete your reports on uninstall. Unless you turn that on. Removing a plugin should not take your records with it; settings are removed, reports stay.

Why not just run a link checker?

Run one. They are useful, and this plugin is not trying to be one. A crawler answers a narrow question well: does this address still return something. That catches the 404s and the timeouts, and it catches them at three in the morning without anyone watching.

What it cannot answer is whether the thing that came back is the right thing. Wrong file, outdated screenshot, parked domain, silent embed: all of it passes a status check. Judgment is the part you need a person for, and people are already on your pages.

The other difference is timing. A crawl tells you on its schedule. A reader tells you the moment it matters, which is usually before your next crawl and always before the next visitor hits the same wall.

Updating from 1.x

Update as usual. Your reports, notification address and wording are taken over; the old box title becomes the button text. The shortcode [linksentry] and its attributes from version 1 keep working, and the block in your posts stays where it is. The settings now live under Reports, Settings.

Two things changed under the hood. Reports no longer fail with “Invalid security token” on cached pages, because they are sent without a page nonce. And the wait time can no longer be bypassed with faked proxy headers; if your site sits behind a proxy, the filter linkbrco_client_ip passes the real visitor address.

Set up in three steps

01

Install it

Plugins, Add New, search for LinkSentry Broken Content Reporter, install, activate. No account and no license key.

02

Choose where the button appears

Reports, Settings, Placement: after every post, before the content or as a floating button. Or leave it off and place the block or the shortcode yourself.

03

Pick a style and an address

Style, accent color and dialog with the preview open, then the address that gets the email. Spam protection works from the start.

Free forever, and why

This plugin is free and stays free. There is no Pro tier and none is planned. It exists because a reader told me about a dead download three months after it died, and I wanted to know sooner next time.

If it saved you an afternoon, the useful things are a rating on wordpress.org, a post in the support forum when something is off, or a hand with the translation.

Frequently asked questions

Can visitors report something without an account?

Yes, and that is the point. No login, no registration, not even an email address unless they want a reply or you make it required.

Where does the button appear?

Wherever you choose under Reports, Settings, Placement: after or before the content of posts, pages or any public post type, or as a floating button in the corner. Or only where you place the block "Report Issue (LinkSentry)" or the shortcode [linkbrco]. A switch in the editor sidebar hides it on single posts.

Where do the reports show up?

Under Reports in the admin menu, with a red counter for the ones you have not opened, and in a dashboard widget. You also get an email for every new report unless you switch that off.

Does it work with caching plugins?

Yes. The form does not depend on a security token in the page, so cached pages work. That was the most common problem with version 1.

How does the spam protection work?

Without a captcha: a hidden trap field, a minimum fill time, a wait time between reports from the same visitor and a daily limit per page. All limits can be changed. If spam still gets through, switch on Google reCAPTCHA v2 or hCaptcha.

Can I change the issue types and the wording?

Yes. Add your own issue types with an icon, rename, reorder or switch them off. Button text, dialog title, box heading and text, send button and thank-you are all settings; empty fields use the default wording in the language of the page.

Does it work with WPML and Polylang?

Yes. Your own texts and issue types appear in String Translation or Strings translations and are shown in the language of the page. Each report keeps the address of the language version it was sent from.

What does it store about the reader?

The page, the issue type, the details and, if given, the email. IP addresses are never stored in plain text; the anonymized fingerprint is off by default and browser details can be switched off. Reports can be exported and erased per email with the WordPress privacy tools and deleted automatically after a number of days.

Does the plugin send data anywhere?

No. Reports stay in your database and the only outbound message is the notification email to you. The optional captcha is the only external service, and it is off by default.

Are my reports deleted when I uninstall the plugin?

Only if you turned on "Delete all reports when the plugin is deleted". Settings are always removed.

Is there a Pro version?

No, and none is planned. Every feature is in the free plugin.

Changelog

2.0.0

Oct 1, 2026: rebuilt around the reader. Automatic placement before or after the content or as a floating button, with a per-post switch; four styles and a light, dark or theme-colored dialog; issue tiles, a thank-you state and a bottom sheet on phones; settings under Reports, Settings with a live preview; own issue types; dashboard widget; several recipients, replies go to the reader; reports work on cached pages; trap field, fill time, wait time and daily limit against spam, optional reCAPTCHA v2 or hCaptcha; privacy export and erase, automatic deletion; WPML and Polylang; no jQuery on the front end.

1.0.1

Jul 5, 2026: shortcode without attributes no longer fatals, correct page URL on sub-directory installs, unique element IDs when several boxes share a page, block alignment carried to the front end, sortable issue-type column, plain-text notification emails.

1.0.0

First version: block, shortcode, modal dialog, four issue types, reports in the admin, throttling and honeypot.

Full changelog on WordPress.org

More from desk9

Smart Download Redirector A countdown page in front of downloads and external links, with statistics of what actually gets used.

Image Credit Companion Photographer, license and source for every picture. Useful once readers start flagging images.

All desk9 plugins Every plugin, free and Pro, on one page.

Free forever. No Pro, no nag screens.

Every feature is in the free version. Updates arrive through WordPress, no account and no license key.

At a glance

Version2.0.0
Last updateOct 1, 2026
Requires WP6.3+
Tested up to7.1.3
PHP7.4+
LicenseGPL

Why it is free

Every feature is in the free plugin, and it stays that way. If it saves you time, a review on wordpress.org is the best way to say thanks.