Title: ListenUp
Author: Adam Greenwell
Published: <strong>Februari 3, 2026</strong>
Last modified: Jun 17, 2026

---

Search plugins

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

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

# ListenUp

 By [Adam Greenwell](https://profiles.wordpress.org/adamgreenwell/)

[Download](https://downloads.wordpress.org/plugin/listenup.1.5.136.zip)

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

 [Support](https://wordpress.org/support/plugin/listenup/)

## Description

ListenUp is a powerful WordPress plugin that adds text-to-speech functionality to
your posts and pages. With just a few clicks, you can generate high-quality audio
versions of your content using Murf.ai’s advanced AI voices.

#### Key Features

 * **Easy Audio Generation**: Generate audio for any post or page with a simple 
   click
 * **Murf.ai Integration**: Uses professional AI voices for natural-sounding audio
 * **Gen2 API Controls**: Tune reusable Murf audio with locale, format, response
   mode, duration, timing metadata, speed, pitch and pauses
 * **No FFmpeg Required**: Ideal for hosting environments where FFmpeg is not available
   or restricted
 * **Smart Caching**: Audio files are cached locally to save API credits
 * **Hands-Off Generation**: Queue audio automatically when content is published
   and backfill recent posts on a schedule
 * **Intelligent Chunking**: Long content is automatically broken into manageable
   chunks
 * **Seamless Playback**: Multiple audio chunks play continuously without interruption
 * **Leech Protection**: Secure audio delivery prevents unauthorized direct file
   access and hotlinking
 * **Download Control**: Restrict downloads to logged-in users or disable downloads
   entirely
 * **Flexible Placement**: Choose where to display the audio player (before/after
   content)
 * **Shortcode Support**: Use [listenup] shortcode to place players anywhere
 * **Accessibility First**: WCAG-compliant audio player with keyboard navigation
 * **Mobile Responsive**: Works perfectly on all devices
 * **Admin-Friendly**: Simple settings page with clear instructions

#### How It Works

 1. **Setup**: Enter your Murf.ai API key in the plugin settings
 2. **Generate**: Use the meta box on any post/page, or enable background generation
    on publish
 3. **Display**: Audio players appear automatically or via shortcode
 4. **Listen**: Visitors can play, pause, and download audio content

#### Advanced Features

**Content Chunking**: For posts that exceed Murf.ai’s API limits, content is automatically
broken into smaller chunks. Each chunk generates a separate audio file, but the 
frontend player seamlessly plays all chunks in sequence without interruption.

**Audio Concatenation**: When downloading audio content that has been chunked, the
plugin automatically concatenates supported stream-friendly formats into a single
file, so listeners do not have to manage separate chunks.

**Bulk Cloud Migration**: Upload existing local-only audio files to configured cloud
storage from the Audio Library without regenerating audio. Large backlogs run in
small browser-safe batches, track remaining work by post, and upload the canonical
playable audio file instead of internal chunk files.

**Murf Gen2 Controls**: Choose URL or direct base64 responses, set single-file target
durations, request word timing metadata, tune speed/pitch/variation, and use `[pause
1s]` tags in content or pre-roll scripts. ListenUp still caches generated files 
locally so audio is reused instead of regenerated on every play.

**No FFmpeg Dependency**: Unlike many audio plugins, ListenUp doesn’t require FFmpeg,
making it perfect for shared hosting environments, managed WordPress hosts, or any
situation where FFmpeg is not available or restricted.

**Leech Protection**: Audio files are served through a secure PHP proxy with cache-
safe per-file tokens, preventing unauthorized direct access and hotlinking without
embedding expiring nonces in cached article HTML. All audio is delivered via WordPress
AJAX endpoints with proper HTTP range request support for smooth seeking. This server-
agnostic solution works on Apache, Nginx, IIS, and any PHP-capable server without
requiring special server configuration.

#### Perfect For

 * Bloggers who want to offer audio versions of their posts
 * Content creators looking to improve accessibility
 * Websites targeting mobile users who prefer audio content
 * Educational sites with long-form content
 * News sites wanting to offer audio news

#### Accessibility Features

 * Full keyboard navigation support
 * Screen reader compatible
 * High contrast mode support
 * Reduced motion support
 * Proper ARIA labels and descriptions

### External Services

This plugin integrates with external services to provide text-to-speech functionality
and optional cloud storage capabilities.

**Murf.ai API**
 This plugin uses Murf.ai’s text-to-speech API to generate high-
quality audio content from your post and page text.

 * **Purpose**: Generates high-quality audio from text content using professional
   AI voices
 * **Data Sent**: Post/page text content, selected voice ID, locale, voice style
   preferences, speech generation settings, response mode, optional target duration,
   optional word timing request, pronunciation dictionary rules (if configured)
 * **When Sent**: Only when audio generation is requested manually, queued automatically
   on publish, processed by the recurring backfill job, or when generating pre-roll
   audio through the plugin settings
 * **Terms of Service**: https://murf.ai/terms-of-service
 * **Privacy Policy**: https://murf.ai/privacy-policy

**Optional Cloud Storage Services**
 This plugin optionally supports uploading audio
files to cloud storage services (Amazon S3, Google Cloud Storage, Cloudflare R2)
to reduce bandwidth usage on your web server. This feature is completely optional
and disabled by default. No data is sent to these services unless you explicitly
configure and enable cloud storage in the plugin settings.

 * **Amazon S3**: https://aws.amazon.com/service-terms/
 * **Google Cloud Storage**: https://cloud.google.com/terms/
 * **Cloudflare R2**: https://www.cloudflare.com/terms/

### Support

For support, please visit the plugin’s support forum or contact the developer.

### Privacy Policy

This plugin does not collect or store any personal data. Audio files are cached 
locally on your server. The plugin only communicates with Murf.ai’s API when audio
generation is requested manually, through enabled automation, or when generating
pre-roll audio from plugin settings.

## Screenshots

[⌊Choose your desired voice, language and reading style⌉⌊Choose your desired voice,
language and reading style⌉[

Choose your desired voice, language and reading style

[⌊Automatically insert the player into your theme or manually add with a shortcode⌉⌊
Automatically insert the player into your theme or manually add with a shortcode⌉[

Automatically insert the player into your theme or manually add with a shortcode

[⌊Specify how words and phrases should be pronounced⌉⌊Specify how words and phrases
should be pronounced⌉[

Specify how words and phrases should be pronounced

[⌊Add or generate pre-roll audio to play before each content piece⌉⌊Add or generate
pre-roll audio to play before each content piece⌉[

Add or generate pre-roll audio to play before each content piece

[⌊Offload audio to S3, R2 or GCS to reduce bandwidth usage and server load⌉⌊Offload
audio to S3, R2 or GCS to reduce bandwidth usage and server load⌉[

Offload audio to S3, R2 or GCS to reduce bandwidth usage and server load

[⌊Quickly see which posts have audio, what type of audio and where the audio is 
stored⌉⌊Quickly see which posts have audio, what type of audio and where the audio
is stored⌉[

Quickly see which posts have audio, what type of audio and where the audio is stored

[⌊Generate audio from your post editor with a single click⌉⌊Generate audio from 
your post editor with a single click⌉[

Generate audio from your post editor with a single click

## Installation

 1. Upload the plugin files to the `/wp-content/plugins/listenup` directory, or install
    the plugin through the WordPress plugins screen directly.
 2. Activate the plugin through the ‘Plugins’ screen in WordPress
 3. Go to Settings > ListenUp to configure your Murf.ai API key
 4. Start generating audio manually, or enable Automation settings for hands-off generation

## FAQ

### Do I need a Murf.ai account?

Yes, you’ll need a Murf.ai account and API key to use this plugin. You can sign 
up at Murf.ai and get your API key from your dashboard.

### How much does Murf.ai cost?

Murf.ai offers various pricing plans. Check their website for current pricing information.

### Can I use this on multiple sites?

Yes, but you’ll need separate API keys for each site or ensure your Murf.ai plan
supports multiple domains.

### What audio formats are supported?

The plugin supports MP3, WAV, FLAC, ALAW, ULAW, PCM, and OGG output from Murf.ai.
MP3 is the default because it works well across browsers and supports chunked audio
downloads without requiring FFmpeg.

### What is the Audio Response Mode setting?

Audio Response Mode controls how ListenUp receives the generated file from Murf.
ai. URL mode asks Murf for a hosted audio URL, then ListenUp downloads and caches
it. Direct base64 mode asks Murf to return the encoded audio in the API response,
then ListenUp decodes and caches it locally. Both modes still generate audio through
Murf.ai and both are cached locally after generation.

### Does direct base64 mode cost less?

No. Response mode changes delivery, not Murf.ai generation usage. The cost saver
is ListenUp’s local cache: once audio is generated and cached, visitors replay the
saved file instead of generating new audio each time.

### Can I force audio to a specific length?

You can set an optional target duration for single-file Murf Gen2 audio. Murf.ai
treats this as a generation target, not a frame-perfect editor. For very long posts
that ListenUp splits into multiple chunks, target duration is skipped so each chunk
can be generated safely.

### Can I add pauses to the spoken audio?

Yes. Add pause tags like `[pause 1s]` in post content or generated pre-roll scripts.
ListenUp normalizes supported pause values between 0.1 seconds and 5 seconds before
sending text to Murf.ai.

### What does Word Timing Metadata do?

When enabled, ListenUp asks Murf.ai to return word timing metadata and stores it
with newly generated audio when Murf returns it. This metadata is mainly for future
transcript and word-highlighting features; it does not display a transcript on the
frontend yet. Regenerate existing audio if you need timing metadata added to audio
that was already cached.

### Can I customize the audio player appearance?

Yes, the plugin includes CSS classes that you can customize in your theme’s stylesheet.

### What happens with very long posts?

For posts that exceed Murf.ai’s API character limits, the plugin automatically breaks
the content into smaller chunks. Each chunk is processed separately and saved as
an individual audio file. The frontend player seamlessly plays all chunks in sequence,
and supported formats can be downloaded as a concatenated file.

### How does the leech protection work?

ListenUp serves audio files through a secure PHP proxy instead of relying on direct
file access. Public playback URLs include stable per-file tokens so cached pages
keep working behind page caches, CDNs, and hosts like Kinsta. Private or unpublished
content still uses WordPress nonce and capability checks where needed. The system
supports HTTP range requests for smooth audio seeking and includes proper caching
headers for performance. This protection works automatically without requiring any
server configuration.

### Can I block direct access to audio files at the server level?

Yes! For additional security, you can configure your web server to block direct 
access to the audio directory. Here are example configurations:

**For Apache (.htaccess):**
 Add this to `/wp-content/uploads/listenup-audio/.htaccess`:`
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [F,L] </IfModule>

**For Nginx:**
 Add this to your server block configuration: `location ~* ^/wp-content/
uploads/listenup-audio/ { return 403; }

After implementing server-level blocks, audio will still play normally through the
WordPress player because the plugin reads files directly from the filesystem, bypassing
the web server’s URL routing entirely.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“ListenUp” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ Adam Greenwell ](https://profiles.wordpress.org/adamgreenwell/)

[Translate “ListenUp” into your language.](https://translate.wordpress.org/projects/wp-plugins/listenup)

### Interested in development?

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

## Changelog

#### 1.5.136

 * Fixed audio playback failures on long-lived page caches by removing expiring 
   nonce requirements from public playback URL refreshes
 * Added cache-safe local audio proxy tokens and legacy nonce compatibility for 
   existing cached markup
 * Added Audio Library bulk upload controls for moving existing local-only audio
   files to cloud storage without regenerating
 * Fixed bulk cloud upload counting so the Audio Library tracks local-only posts
   and does not count internal chunk files as separate migration items
 * Added Kinsta edge/CDN cache guidance for large sites using cloud storage and 
   signed audio URLs

#### 1.5.135

 * Added file-based cache busting for plugin assets to prevent stale JavaScript 
   after CDN/browser caching
 * Added Murf Gen2 locale, sample rate, channel, response mode, duration, word timing,
   pause, speed, pitch and variation controls for reusable audio generation
 * Added direct base64 response caching, optional target duration, word timing metadata
   storage and pause tag normalization for Murf Gen2 generation

#### 1.5.134

 * Added player display options for featured or compact layouts
 * Added selectable player accent colors
 * Refreshed the frontend player with a featured visual treatment and stronger theme
   isolation
 * Removed the experimental Howler.js playback option in favor of the native browser
   audio player

#### 1.5.132

 * Added Automation settings for publish-triggered audio generation and recurring
   recent-content backfill
 * Fixed audio playback failing on post revisions and previews due to meta lookups
   using the revision ID instead of the parent post
 * Centralized revision-to-parent post resolution into Cache::get_meta_post_id()
   for consistent behavior across all audio endpoints
 * Fixed pre-roll audio URL resolution for revisions via cloud storage
 * Fixed access check in AJAX audio URL handler incorrectly rejecting anonymous 
   users on revisions of published posts
 * Preserved audio post meta when local files are missing instead of deleting it,
   allowing recovery and regeneration

#### 1.5.131

 * Security fixes

#### 1.5.13

 * Fixed audio playback errors caused by expired signed URLs when page caching is
   enabled
 * Cloud storage audio URLs are now fetched fresh via AJAX on player initialization
 * Improved compatibility with page caching plugins and CDNs (Varnish, Cloudflare,
   WP Super Cache, etc.)
 * Enhanced security: added post existence and publication status validation for
   audio URL requests
 * Improved error handling with generic client messages and detailed server-side
   logging

#### 1.5.12

 * Code optimizations for WordPress plugin directory compliance
 * Update documentation with external service usage

#### 1.5.11

 * Added pagination to Audio Library admin page
 * Update Audio Library filtering
 * Improve analytics events to not fire for pre-roll audio

#### 1.5.1

 * Added “pronunciation” feature to plugin settings to specify how certain words
   should be spoken

#### 1.5.0

 * Code quality improvements and WordPress coding standards compliance
 * Enhanced security and sanitization throughout the plugin
 * Improved error handling and user feedback
 * Optimized file operations and directory structure
 * Better compatibility with WordPress plugin directory requirements

#### 1.4.1

 * Implement tracking feature to push events to the datalayer for GTM and GA4 consumption

#### 1.4.0

 * Add option to specify conversion output bitrate
 * Add option to apply normalization with parameters to conversion process

#### 1.3.22

 * Fix autoplay feature in audio library

#### 1.3.21

 * Add ability to delete cloud audio as well as local audio files

#### 1.3.2

 * Improve frontend player user experience when pre-roll audio is present

#### 1.3.11

 * Add feature to generate pre-roll audio

#### 1.3.1

 * Add “autoplay” feature to audio library shortcode

#### 1.3.0

 * Restrict download to logged-in users or block all downloads completely
 * Implemented leech protection (requires server configuration)
 * 1.2.01 =
 * Minor frontend player presentation improvements

#### 1.2.0

 * Added ability to generate audio for posts that do not fit in the Murf.ai API 
   request length

#### 1.1.1

 * Improved debug logging

#### 1.1.0

 * Users can select a default voice and style
 * Voices can now be previewed

#### 1.0.0

 * Initial release
 * Murf.ai API integration
 * Audio caching system
 * Meta box for manual generation
 * Automatic placement options
 * Shortcode support
 * Accessibility features
 * Mobile responsive design

## Meta

 *  Version **1.5.136**
 *  Last updated **2 háfta óll ago**
 *  Active installations **10+**
 *  WordPress version ** 5.9 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 8.1 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/listenup/)
 * Tags
 * [accessibility](https://rhg.wordpress.org/plugins/tags/accessibility/)[audio](https://rhg.wordpress.org/plugins/tags/audio/)
   [text to speech](https://rhg.wordpress.org/plugins/tags/text-to-speech/)[tts](https://rhg.wordpress.org/plugins/tags/tts/)
 *  [Advanced View](https://rhg.wordpress.org/plugins/listenup/advanced/)

## Ratings

No reviews have been submitted yet.

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

[See all reviews](https://wordpress.org/support/plugin/listenup/reviews/)

## Contributors

 *   [ Adam Greenwell ](https://profiles.wordpress.org/adamgreenwell/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/listenup/)