Directory / plugin

Hearpost

v1.0.0 · by Pathmaka Galappaththi

A floating "Listen to this article" widget powered by the visitor's own browser. No API keys, no external services, no ongoing cost.

View on WordPress.org

About this plugin

Hearpost adds a floating text-to-speech widget to your posts and pages, using the browser’s built-in Web Speech API (SpeechSynthesisUtterance). Nothing is sent to any external server — the entire reading happens locally in the visitor’s browser.

Features

  • Floating widget — collapses to a small icon; click to expand into the full player
  • Play / Pause toggle, with a Speed slider (0.5x–2x)
  • Voice selector — automatically shown only when the visitor’s browser actually offers more than one voice; hidden entirely otherwise
  • Six position presets — Top Left, Top Right, Middle Left, Middle Right, Bottom Left, Bottom Right
  • Customizable icon color via a native WordPress color picker
  • Customizable widget title, also shown as a hover tooltip on the collapsed icon
  • [hearpost_reader] shortcode for manual placement, if you’d rather not auto-insert it everywhere
  • Reset to Defaults button to wipe customizations and start over
  • Fully self-contained icon (inline SVG) — no external requests, not even to WordPress’s own emoji CDN

Notes & Limitations

  • Voice availability is entirely browser/OS-dependent. Desktop Chrome tends to offer several voices; some mobile browsers offer only one (or none) — in the latter case, the Voice dropdown is automatically hidden.
  • Changing speed or voice mid-playback resumes from roughly the last spoken word (tracked via the browser’s boundary events) rather than restarting from the top — but this depends on the browser/voice actually firing those events. When it isn’t supported, it falls back to restarting from the beginning.
  • Closing the widget (×) does not pause or stop playback — it keeps reading in the background, the same way a minimized media player would. Reopening the panel reflects the correct Play/Pause state.
  • Some browsers’ built-in voices (e.g. certain Chrome “network” voices) stream over the internet in the background as an inherent part of how the browser implements them — this is outside the plugin’s control either way.

Plugin tags