Sa

Safe SVG

by 10up

Allows SVG uploads while sanitising each file, so vector logos and icons cannot carry scripts.

4.979 WordPress.org reviewsMediaFree

This link may earn us a commission. It never changes our rating.

What Safe SVG does

Allows SVG uploads while sanitising each file, so vector logos and icons cannot carry scripts.

It sits in the media part of a WordPress stack and is sold by 10up on a free basis. We recommend it in our media guides because it does that one job well without asking you to rebuild the rest of the site around it.

Every plugin adds work to a page request, so treat this as a decision with a cost. Record a speed test before you install it and run the same test afterwards, on the same page, so you know exactly what it charged you.

Real user ratings

Score

4.9/5

Reviews

79

Active installs

1,000,000+

Downloads

13.6M

Latest version

2.5.0

Last updated

2026-09-06

These figures come straight from the public WordPress.org plugin directory API for version 2.5.0, not from us. Check them yourself on the WordPress.org listing. Our own editorial score is 4.9/5.

Where Safe SVG ranks elsewhere

Safe SVG does not appear in the published "best of" lists we track from WPBeginner, TechRadar, Kinsta, Themeisle and similar sites. That is not a mark against it - those roundups are short and skew towards the biggest names.

What changed in the latest version

v2.5.0Latest release2026-09-07
  • Security: Prevented direct access of PHP files (props @mehrazmorshed , @dkotter via #300 ).
  • Security: The Inline SVG block now renders SVGs that carry their own <style> element inside a shadow root, so their CSS is scoped to the block instead of applying to the whole page (props @darylldoyle , @dkotter , @jeffpaul , @peterwilso...
  • Security: Bump enshrined/svg-sanitize from ^0.22.0 to ^1.0.0 to pull in security fixes (props @dkotter , @jeffpaul , @peterwilsoncc via #327 ).
  • Added: Link support for the SVG Inline block, including URL input, new tab toggle, and nofollow/sponsored rel options (props @vegetable-bits , @mgiannopoulos24 , @jeffpaul , @thrijith , @peterwilsoncc , @dkotter , @pbiron via #315 ).
  • Added: New safe_svg_inline_use_shadow_dom filter to control which inline SVGs are isolated in a shadow root, and new safe_svg_inline_shadow_styles filter to adjust the CSS injected alongside them (props @darylldoyle , @dkotter , @jeffpau...
  • Added: New safe_svg_remove_remote_references filter to strip remote url() , @import and image-set() references, along with remote href targets, from uploaded SVGs. Off by default, because legitimate SVGs reference remote fonts and images...
  • Added: Added support for Enable Media Replace plugin (props @gthayer , @jeffpaul , @peterwilsoncc via #285 ).
  • Changed: Bump WordPress minimum supported version to 6.9 (props @zamanq , @peterwilsoncc via #320 ).
v2.4.02025-09-22
  • Added: Ability to upload SVGs from more admin locations (props @stormrockwell , @darylldoyle , @wpexplorer , @smerriman , @jeffpaul , @dkotter via #279 ).
  • Changed: Added $attachment_id argument to filters safe_svg_use_width_height_attributes and safe_svg_dimensions (props @roborourke , @dkotter via #278 ).
  • Fixed: Inconsistent or incorrect data type for $svg argument in the filters safe_svg_use_width_height_attributes and safe_svg_dimensions (props @roborourke , @dkotter via #278 ).
v2.3.32025-08-13
  • Security: Update the enshrined/svg-sanitize package from 0.19.0 to 0.22.0 to fix an issue with case-insensitive attributes slipping through the sanitiser and address PHP 8.4 deprecation warnings (props @darylldoyle , @sudar , @georgestep...
  • Security: Bump form-data from 4.0.0 to 4.0.4 (props @dependabot , @faisal-alvi via #270 ).
  • Security: Bump tmp from 0.2.3 to 0.2.5 and @inquirer/editor from 4.2.9 to 4.2.16 (props @dependabot , @dkotter via #271 ).

Release notes are the developer's own words, published on WordPress.org. Read the full changelog

Pros and cons

  • SVG uploads without the usual security hole
  • Free with no licence to renew
  • Actively maintained and used on production sites we test
  • Only trusted roles should still be allowed to upload
  • Support is community-led rather than guaranteed

How to use it

  1. 1Install on a staging copy first if the site takes money.
  2. 2Work through the setup wizard and connect any external accounts it needs.
  3. 3Configure the one feature you installed it for, and leave the rest off.
  4. 4Test the result as a logged-out visitor on both mobile and desktop.
  5. 5Re-run our speed test to confirm the plugin has not cost you load time.

How it compares

Other media plugins we recommend, with their rating and pricing model.

PluginOur ratingWordPress.orgPricingBest for
Safe SVG4.94.9 (79)FreeSVG uploads without the usual security hole
Enable Media Replace4.44.4 (302)FreemiumSwap a file without hunting down every link