Title: GlitchPin &#8211; Visual Bug Feedback
Author: PluginPeer
Published: <strong>October 26, 2026</strong>
Last modified: October 26, 2026

---

Search plugins

![](https://ps.w.org/ppeer-glitchpin/assets/banner-772x250.png?rev=3766335)

![](https://ps.w.org/ppeer-glitchpin/assets/icon-256x256.png?rev=3766335)

# GlitchPin – Visual Bug Feedback

 By [PluginPeer](https://profiles.wordpress.org/pluginpeer/)

[Download](https://downloads.wordpress.org/plugin/ppeer-glitchpin.1.2.25.zip)

 * [Details](https://wordpress.org/plugins/ppeer-glitchpin/#description)
 * [Reviews](https://wordpress.org/plugins/ppeer-glitchpin/#reviews)
 *  [Installation](https://wordpress.org/plugins/ppeer-glitchpin/#installation)
 * [Development](https://wordpress.org/plugins/ppeer-glitchpin/#developers)

 [Support](https://wordpress.org/support/plugin/ppeer-glitchpin/)

## Description

GlitchPin helps visitors and testers report problems without leaving the page. Administrators
review reports in the WordPress dashboard.

 * Floating icon-only bug button with configurable position and color.
 * PluginPeer QA feedback panel: one message and Save feedback, without a second
   form.
 * Capture the visible page, then add a message, select an area, draw, and place
   numbered markers with notes.
 * Retry capture or upload PNG, JPEG, or WebP if automatic capture fails; annotated
   images are stored privately in the database.
 * PluginPeer-styled report list, category/status filters, date sorting, pagination,
   and bulk actions.
 * Five statuses: New, Confirmed, In Progress, Resolved, and Rejected.
 * Optional administrator email notifications.
 * Per-visitor and site-wide limits, storage quotas, and daily retention cleanup.
 * WordPress personal data export/erasure support.

The widget is disabled by default. After activation, open GlitchPin > Settings, 
enable reporting, and choose who can submit. The default audience is logged-in users.
Public visibility of the widget never grants public access to reports or screenshots.

#### Privacy

Reports remain in this website’s database. No data is sent to PluginPeer and no 
external JavaScript, fonts, or CDN resources are loaded. Optional notification email
uses WordPress wp_mail and the site’s configured mail service. Messages contain 
the report title, category, date, and private admin link; no image is attached.

Reports contain the feedback message, numbered marker notes, annotated screenshot,
page address without query parameters or fragments, and account ID for signed-in
reporters. The report title is derived from the first message line. The widget does
not ask for email, reproduction steps, DOM element selection, or extended diagnostics.
Clicking the bug icon captures the visible page locally. Capture hides form fields,
editable content, embedded frames/video, and sections marked data-ppbh-private. 
Other visible page content may contain personal information. Manual uploads are 
not automatically redacted. Review the captured image before saving; close the panel
without saving if it contains information you do not want to share. Only Save feedback
sends the final annotated image and message. DOM markup, cookies, tokens, and network
requests are not collected as report data. Older reports and compatible API clients
can contain optional email, element geometry, and diagnostics.

Original screenshots are decoded and re-encoded to strip image metadata and appended
content. Only the resulting image is retained, outside the Media Library and public
uploads filesystem. A capability-checked, nonce-protected administrator endpoint
serves images with no-store headers. Images are PNG or JPEG after normalization;
WebP inputs are converted to PNG.

Rate limiting stores a keyed hash of an IP address or account ID in an hourly bucket.
Raw IP addresses are not stored. Buckets expire after at most two hours and are 
removed by daily cleanup. Hosting access logs are outside this plugin’s control.

Reports expire after 90 days by default. Choose another period or 0 to retain reports
until deletion. Daily WP-Cron cleanup handles up to 200 expired reports per run;
low-traffic sites should configure a real cron runner if timely deletion is required.
Deleting a report also deletes its image. Deactivation preserves reports. Uninstall
removes data only if the administrator enabled that setting first.

Use Settings > Privacy to configure your policy page and review the suggested policy
text. Tools > Export Personal Data and Erase Personal Data handle reports matched
by submitted email or account email. Screenshot data is included as MIME/base64 
text in authorized privacy exports. Reports without either identifier must be handled
manually by an administrator.

### Development

TypeScript sources are included under src/. Run npm ci and npm run build to rebuild
public/assets/reporter.js. No build step or Node.js is required on the production
WordPress site. See docs/TECHNICAL.md for architecture, API contracts, testing, 
and release checks.

## Installation

 1. Upload the plugin folder to wp-content/plugins or install the ZIP from Plugins 
    > Add New.
 2. Activate GlitchPin.
 3. Open GlitchPin > Settings and check Enable bug reporting.
 4. Choose the reporting audience and save settings.
 5. Open a frontend page as an eligible visitor and click the bug icon (Report a bug).
 6. Add a message in the PluginPeer feedback panel. Optionally select an area, draw,
    or add marker notes, then choose Save feedback. There is no second form.

PHP GD is required for saving screenshot feedback. Supports MySQL/MariaDB with InnoDB
and WordPress Playground with the WordPress SQLite Database Integration adapter.
Multisite administrators should activate the plugin separately for each site; network-
wide activation is intentionally refused.

## FAQ

### Do I need a PluginPeer account?

No. GlitchPin runs locally on your WordPress site. No PluginPeer account or external
service is required.

### Can visitors see reports or screenshots?

No. Viewing and managing reports requires the manage_options capability. The public
creation response contains only success and a message, without a report ID.

### Will this work with Nginx?

Screenshot privacy does not depend on Apache rules or a private uploads directory.
Image bytes are stored in a separate database table and delivered only after administrator
authorization.

### How large can screenshots be?

Screenshots are automatically compressed and, when needed, resized before submission.
There is no administrator image-size setting. The widget adapts to the server upload
limit with headroom for form data and an internal 5 MB upload ceiling. Replacement
images can be up to 32 MB locally, 16 megapixels and 8192 pixels per side; they 
are optimized before upload. The server removes metadata and optimizes again if 
re-encoding increases the size. Hosting memory and upload constraints still apply.

### Does capture reproduce every part of the page?

Capture uses a bundled html2canvas renderer, not browser screen sharing. It captures
the current viewport, not the full scrollable page. Unsupported CSS, cross-origin
images, embedded content, and some canvas content may be absent or differ. Upload
a screenshot instead when needed. Mark areas private with data-ppbh-private. This
hides the marked element and its children in automatic captures without changing
the live page.

### Can I use this behind a reverse proxy or a page cache?

Rate limiting uses REMOTE_ADDR and ignores untrusted forwarding headers. Visitors
behind a proxy can share a quota. Configure your trusted proxy at the server level.
Exclude role-restricted and signed-in widget pages from shared full-page caching.
REST authorization still enforces the audience even if a cached page contains the
widget. If a session expires, reload the page.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“GlitchPin – Visual Bug Feedback” is open source software. The following people 
have contributed to this plugin.

Contributors

 *   [ PluginPeer ](https://profiles.wordpress.org/pluginpeer/)

[Translate “GlitchPin – Visual Bug Feedback” into your language.](https://translate.wordpress.org/projects/wp-plugins/ppeer-glitchpin)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/ppeer-glitchpin/), 
check out the [SVN repository](https://plugins.svn.wordpress.org/ppeer-glitchpin/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/ppeer-glitchpin/)
by [RSS](https://plugins.trac.wordpress.org/log/ppeer-glitchpin/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.2.25

 * Keep the page visible through a transparent background while preparing a screenshot,
   with a compact capture panel on mobile.
 * Allow capture cancellation and ignore results from cancelled attempts.

#### 1.2.24

 * Remove deprecated GD image cleanup calls to prevent PHP 8.5 warnings when processing
   screenshots.

#### 1.2.23

 * Preserve loaded page styles when capturing feedback in WordPress Playground.
 * Keep stylesheet order, imported rules, media conditions, and relative asset URLs
   in captured screenshots.

#### 1.2.12

 * Fix feedback storage in WordPress Playground with SQLite using transactional 
   row locking instead of MySQL advisory locks.
 * Keep report and screenshot deletion atomic with portable queries and checked 
   transaction results.
 * Add a retryable schema upgrade that preserves existing feedback and screenshots.

#### 1.2.11

 * Change the distribution slug and text domain to ppeer-glitchpin.

#### 1.2.10

 * Use glitchpin prefixes for admin page URLs and the REST API namespace. Existing
   feedback and settings are preserved.

#### 1.2.9

 * Rename the plugin to GlitchPin with the glitchpin distribution slug and text 
   domain. Existing feedback and settings are preserved.

#### 1.2.8

 * Rename the plugin to Bug Hunter, with the bug-hunter distribution slug and text
   domain. PluginPeer remains the author.

#### 1.2.7

 * Expand feedback details to the same content width as the Bugs hunted list.

#### 0.2.6

 * Remove the maximum image size setting and optimize large screenshots automatically
   before upload and after server re-encoding.

#### 0.2.5

 * Make the site-wide hourly submission limit configurable, separately from the 
   per-visitor limit.
 * Replace typed deletion confirmation with an accessible confirmation modal.
 * Simplify feedback details, show reporter profile links, and rename admin views
   and routes.

#### 0.2.4

 * Show a persistent Report saved confirmation beside the widget after successful
   submission, with a dismiss action.

#### 0.2.3

 * Remove the visible launcher label and tooltip; keep the refined circular bug 
   icon button.

#### 0.2.2

 * Refine the floating button with a fixed Report a bug label, bug icon, pill shape
   and softer elevation. No custom-label setting.

#### 0.2.1

 * Match the PluginPeer QA feedback panel and save directly from it.
 * Use an icon-only launcher and remove obsolete collection and button-label settings.
 * Keep screenshots intrinsic to reporting and preserve audience restrictions.
 * Isolate test settings so verification cannot overwrite concurrent administrator
   changes.

#### 0.2.0

 * Capture-first feedback with a message box, area selection, freehand drawing, 
   and numbered marker notes.
 * Expanded screenshot review, annotation undo/clear, upload fallback, and keyboard/
   touch support.
 * Hide Allowed roles unless Selected roles is chosen.

#### 0.1.1

 * Apply the PluginPeer visual identity to the reporting widget, element picker,
   and administrator screens.
 * Make optional element selection visible at the start of the report form.
 * Fix single-page pagination warnings and mobile report-table layout.

#### 0.1.0

 * Initial release.

## Meta

 *  Version **1.2.25**
 *  Last updated **3 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 8.3 or higher **
 * Tags
 * [bug reports](https://wordpress.org/plugins/tags/bug-reports/)[feedback](https://wordpress.org/plugins/tags/feedback/)
   [screenshots](https://wordpress.org/plugins/tags/screenshots/)[testing](https://wordpress.org/plugins/tags/testing/)
 *  [Advanced View](https://wordpress.org/plugins/ppeer-glitchpin/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/ppeer-glitchpin/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/ppeer-glitchpin/reviews/)

## Contributors

 *   [ PluginPeer ](https://profiles.wordpress.org/pluginpeer/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/ppeer-glitchpin/)