Skip to content
Secure File Downloads icon

PluginsWordPresson WordPress.org

Secure File Downloads

Hand out PDFs without burning the direct /wp-content/ URL.

Downloads Behind a Door.

Free is the whole plugin — Pro is an optional upgrade, never a paywall. v1.0.10 · WordPress 5.8+ · PHP 7.4+

Secure File Downloads — real WordPress admin screen
Real admin screen · not a mockup

One price list. No lite-version tricks.

Prices in USD. Checkout is WooCommerce on bigbad.agency — the figures below are read from that checkout when this page is built, so what you see is what it charges.

Free

$0forever

Unlimited secure files

  • Unlimited secure files
  • Shortcode buttons
  • Nonce-protected endpoint
  • Direct URL hiding
Get it on WordPress.org

Most pickedPro · 1 Site

$49/year

Analytics, passwords & download limits

  • Everything in Free
  • Download analytics — who, when, how many
  • Password-protected downloads
  • Per-file download limits
  • Email support
Buy 1 Site → checkout

Pro · 5 Sites

$129/year

For multi-site agencies

  • Everything in 1 Site
  • Use on up to 5 sites
  • Priority email support
Buy 5 Sites → checkout

Pro · Agency · Unlimited

$299/year

For dev shops & agencies

  • Everything in 5 Sites
  • Unlimited site activations
  • Priority email support
Buy Agency · Unlimited → checkout

Licence keys are per site activation. Upgrade between tiers any time — you pay the difference. Full refund on request within 12 months of purchase: refund policy · terms of sale · privacy.

Version
v1.0.10 on WordPress.org
Last update
1 Oct 2026
Tested up to
WordPress 7.0.8
Needs
WordPress 5.8+ · PHP 7.4+

Read from WordPress.org when this page was built (29 Oct 2026).

What it fixes.

You want to give visitors a PDF, a brochure, a price sheet — but you don't want to leak the raw /wp-content/uploads/ URL into your HTML where it gets scraped, hot-linked, and shared past your control. Secure File Downloads picks the file from your Media Library, hides the real URL behind a stable File ID, and serves the download through a nonce-protected endpoint with a clean shortcode button. No file manager bloat, no membership plugin, no fake feature ladder. Pro adds per-file password gates, download limits with counters, and a download analytics dashboard — so you actually know who pulled what.

Further reading on Fishbone Talk: how to sell an ebook with woocommerce (or give one away).

The value · before and after

What changes for you.

  • Before

    You email a lead-magnet PDF and its /wp-content/ URL is on Reddit by tomorrow.

    After

    The file sits behind a stable File ID and a nonce-protected endpoint; the real URL never appears in your HTML.

  • Before

    Client wants secure downloads; a file manager is overkill and a membership plugin is six weeks of setup.

    After

    Install, paste one shortcode into a few posts, done before lunch.

  • Before

    The same price sheet gets passed to a thousand people and you never know.

    After

    Pro counts downloads per file, caps them, and lets you set a password without rewriting any links.

Why it is worth it

Versus doing nothing.

  • Free has no cap on secure files and no feature ladder games — it is the whole hide-the-URL fix. Pro exists for the people who need to know who pulled what.

What is in the box

Free is the whole fix. Pro adds the heavy lifting.

Free · no purchase, no account

  • Media Library file pickerPick any file already in your Media Library and assign it a stable File ID.
  • Shortcode download buttons[bbasfd_download id="FILE_ID"] places a download button anywhere — pages, posts, widgets, page builders.
  • Nonce-protected endpointDownloads stream through a controlled endpoint that validates a nonce before serving the file.
  • Hidden direct URLsThe actual /wp-content/uploads/ path is never rendered in your HTML.
  • Customizable button text & classtext="Get the PDF" and class="my-css-class" attributes for styling and copy.
  • Unlimited secure filesNo cap on the number of secure File IDs you can create on the free tier.
  • WP_Filesystem-based readsPlugin Check compliant — no raw fopen, no direct $_GET access.
  • Works with any page builderElementor, Gutenberg, classic editor — anywhere shortcodes render.

Pro adds · from $49/year

  • Per-file download limitsSet a maximum download count per file (0 = unlimited). When the counter hits the cap, downloads of that file return forbidden. Includes a 'Download Limits (Pro)' admin sub-page showing current count + remaining for each file, plus a reset-counter form. Counter is stored in the existing BBASFD_OPT_FILES option (extends each file entry with 'limit' and 'downloads' keys).
  • Download analyticsPer-download event log + admin dashboard. Logs each successful download (timestamp, file_id, attachment_id, user_id, anonymized IP /24, user agent). 7/30/90-day window selector, 4 summary cards, daily inline-SVG bar chart, top files + recent events tables. New DB table bbasfd_download_events.
  • Password-protected downloadsPer-file password gate that runs before the download is served. Correct password issues a 30-minute httponly HMAC-signed cookie so the same browser isn't re-prompted within the TTL. Challenge page is self-contained (inline styles, no theme dependency) and shows an error banner on wrong-password retry. Admin sub-page 'File Passwords' lets the operator set/clear passwords per file.

If any of these sound like you.

  1. 01

    Newsletter and lead-magnet bloggers

    You wrote a 30-page guide, captured an email, and now you need to deliver the PDF. You don't want that PDF URL hot-linked across Reddit by tomorrow. One shortcode, one nonce-protected endpoint, one File ID — done.

  2. 02

    Small businesses distributing price sheets and brochures

    Sales sends customers a download link. Pro adds a per-file password and a counter, so when the same PDF gets passed to a thousand people, you see it and you can change the password without rewriting any links.

  3. 03

    Agencies and freelancers wiring up client sites

    Client wants secure downloads — but a full file manager plugin is overkill and a membership plugin is six weeks of setup. Drop this in, paste the shortcode in five posts, done before lunch.

  4. 04

    Course creators and membership-lite sites

    You're gating downloadable resources but you're not running a full LMS. Password each file, set a download cap per file, and watch the analytics tell you which resources actually get pulled.

Every screen is real · 4

In the admin.

wp-admin · secure file downloads real admin screens
Secure File Downloads — real admin screen 1

Questions people actually ask.

How does the secure download endpoint actually work?

You pick a file from the Media Library and the plugin assigns it a stable File ID. The shortcode renders a button that links to a controlled endpoint (with a nonce on the URL). When a visitor clicks it, the plugin validates the nonce, locates the file, and streams it back. The actual /wp-content/uploads/... path is never written into your page HTML.

Is there a limit on how many files the free version protects?

No. The free plugin has no file cap — you can create as many secure File IDs as you need. Pro does not unlock more files; it adds download analytics, password-protected downloads and per-file download limits.

Do I need WooCommerce?

No. This plugin works on any WordPress site. It does not depend on WooCommerce, downloadable products, or any membership plugin.

Does it work with Elementor and Gutenberg?

Yes. Use Elementor's Shortcode widget or a Shortcode block in Gutenberg with [bbasfd_download id="FILE_ID"]. Works in classic editor too — anywhere shortcodes execute.

Can I customize the button text and styling?

Yes. The shortcode accepts:

  • text="Get the free guide" — overrides the default button label
  • class="my-css-class" — adds your CSS class so you can style it to match your theme
Does it hide my Media Library URL completely?

The download button itself does not expose the direct upload URL — it points at the plugin's endpoint instead. However, this plugin does not block someone from typing the upload URL directly into their browser if they know it. For full file access lockdown (where the upload URL itself returns 403), you'd need to combine this with .htaccess or NGINX rules on /wp-content/uploads/.

Is it Plugin Check / WordPress.org compliant?

Yes. v1.0.7 explicitly addresses Plugin Check requirements: nonce validation runs before any other request input is touched, downloads use WP_Filesystem for file reads, all $_GET values are unslashed before sanitization, and the download endpoint has documented permission hooks.

Will my downloads work behind a CDN or caching plugin?

The shortcode output is cacheable, but the download endpoint itself uses nonces and should be excluded from caching. Most caching plugins skip URLs with query strings by default, which covers this — but if you've got an aggressive cache config, exclude the plugin's download endpoint manually.

What does Pro add?

Three things, all in the Pro add-on's code: download analytics (who downloaded which file, and when), password-protected downloads, and per-file download limits (cap how many times a specific file can be downloaded). File count is not one of them — the free plugin is already unlimited.

Where do I get support?

Free version: the WordPress.org plugin support forum. Pro: email support@bigbad.agency with your license key.

Also on the shelf

More free plugins.

Support: support@bigbad.agency · reviews on WordPress.org