The WordPress Media Upload Challenge
WordPress powers over 40% of the web, but its media handling has specific requirements and limitations that catch many users off guard. You try to upload a video and hit the file size limit. You upload an image in a modern format and WordPress rejects it. You embed a document and it does not display correctly.
Understanding which formats WordPress accepts, how to optimize files before uploading, and how to work around limitations saves hours of frustration. This guide covers everything you need to know about preparing files for WordPress -- from images and videos to documents and audio.

WordPress Default Allowed File Types
WordPress allows a specific set of file types by default. Attempting to upload an unsupported format produces the error: "Sorry, this file type is not permitted for security reasons."
| Category | Allowed Formats | Notable Exclusions |
|---|---|---|
| Images | .jpg, .jpeg, .png, .gif, .ico, .webp, .avif (6.5+), .heic (limited) | .tiff, .bmp, .psd, .raw, .svg (security risk) |
| Video | .mp4, .m4v, .mov, .wmv, .avi, .mpg, .ogv, .3gp, .3g2, .webm | .mkv, .flv, .ts |
| Audio | .mp3, .m4a, .ogg, .wav, .flac | .wma, .aac (standalone), .opus |
| Documents | .pdf, .doc, .docx, .ppt, .pptx, .xls, .xlsx, .odt, .pps, .ppsx | .pages, .numbers, .key, .epub |
| Archives | .zip, .gz, .rar, .7z, .tar | Most other archive formats |
| Other | .csv, .txt, .rtf | .json, .xml, .yaml, .md |
Pro Tip: WordPress determines file type by checking both the extension and the MIME type. Simply renaming a file's extension will not bypass the security check -- WordPress inspects the actual file content. Always convert files properly rather than just renaming them.
WordPress Upload Size Limits
The default maximum upload size depends on your hosting provider, not WordPress itself. Common limits:
| Hosting Type | Typical Max Upload | Can Be Changed? |
|---|---|---|
| Shared hosting (basic) | 2-32 MB | Limited (ask host) |
| Shared hosting (premium) | 64-128 MB | Via php.ini or .htaccess |
| Managed WordPress (WP Engine, Kinsta) | 50-256 MB | Via hosting dashboard |
| VPS / Dedicated server | Unlimited (configurable) | Full control |
| WordPress.com (free) | 1 GB (total storage limited) | No |
| WordPress.com (Business+) | 50 GB storage | No |
To check your current limit, go to Media > Add New -- the maximum upload file size is displayed below the upload area.
Increasing the Upload Limit
Method 1: php.ini (if you have server access)
upload_max_filesize = 256M
post_max_size = 256M
max_execution_time = 300
max_input_time = 300
memory_limit = 512M
Method 2: .htaccess (Apache servers)
php_value upload_max_filesize 256M
php_value post_max_size 256M
php_value max_execution_time 300
php_value max_input_time 300
Method 3: wp-config.php
@ini_set('upload_max_filesize', '256M');
@ini_set('post_max_size', '256M');
define('WP_MEMORY_LIMIT', '512M');
Images: The Most Common WordPress Uploads
Recommended Image Formats
JPEG (.jpg) -- Use for photographs and complex images. Best size-to-quality ratio for photos.
PNG (.png) -- Use for screenshots, graphics with text, logos with transparency. Larger than JPEG for photos but preserves sharp edges and transparency.
WebP (.webp) -- WordPress 5.8+ supports WebP natively. WebP files are 25-35% smaller than JPEG at equivalent quality. Use this as your primary format in 2026.
AVIF (.avif) -- WordPress 6.5+ added AVIF support. Even better compression than WebP (30-50% smaller than JPEG), but some older WordPress installations may not support it.
SVG (.svg) -- WordPress blocks SVGs by default due to security risks (SVGs can contain JavaScript). Enable with a plugin like "Safe SVG" if needed.
Image Optimization Before Upload
WordPress generates multiple image sizes (thumbnail, medium, large, full) for every uploaded image. A single 5 MB upload can create 20+ MB of files on your server. Optimizing before upload is critical.
Target file sizes for WordPress:
- Blog post images: 80-200 KB
- Hero/banner images: 150-400 KB
- Thumbnails: 20-50 KB
- Product photos: 100-300 KB
Use the image compressor to optimize images before uploading. For HEIC photos from iPhones, convert to JPEG or WebP first using the HEIC converter.
Recommended dimensions:
Blog content width: 800-1200px wide
Full-width hero: 1920px wide
Sidebar images: 400-600px wide
Thumbnails: 300x300px
For comprehensive image optimization strategies, the optimize images for website guide covers everything from format selection to lazy loading.
Converting Images for WordPress
Common conversions WordPress users need:
- HEIC to JPEG -- iPhone photos for WordPress: Use the HEIC converter
- TIFF to JPEG -- Scanned documents: Use the JPEG converter
- BMP to PNG -- Legacy screenshots: Use the PNG converter
- PSD to PNG -- Design exports: Export from Photoshop or convert online
- RAW to JPEG -- Camera photos: Process in Lightroom/darktable, export as JPEG

Video: Best Practices for WordPress
The Self-Hosting vs. Embedding Decision
Self-hosting video (uploading directly to WordPress) is almost never the right choice:
- Consumes hosting storage and bandwidth rapidly
- No adaptive bitrate streaming (one quality fits all)
- No video CDN (slow loading for distant visitors)
- Upload size limits restrict video length and quality
- Server CPU handles transcoding rather than a specialized service
Embedding video (YouTube, Vimeo, Wistia) is almost always better:
- Professional video players with adaptive streaming
- Global CDN delivery
- No impact on hosting storage or bandwidth
- Built-in analytics
- SEO benefits (YouTube is the second-largest search engine)
WordPress has built-in oEmbed support -- just paste a YouTube or Vimeo URL on its own line in the editor:
https://www.youtube.com/watch?v=dQw4w9WgXcQ
WordPress automatically converts this to an embedded player.
When You Must Self-Host
If you must self-host (private content, no third-party dependencies), use MP4 with H.264:
- Convert to MP4 using the MP4 converter
- Compress aggressively with the video compressor
- Target 720p or 1080p maximum resolution
- Keep files under 50-100 MB to avoid timeout issues
FFmpeg command for WordPress-optimized video:
ffmpeg -i input.mov -c:v libx264 -crf 24 -preset medium -vf scale=1280:720 \
-c:a aac -b:a 128k -movflags +faststart wordpress_video.mp4
The -movflags +faststart flag is essential -- it allows the video to start playing before fully downloading (progressive download). Without it, visitors must download the entire file before playback begins.
Pro Tip: If you have a WordPress site with many videos, consider Cloudflare Stream, Bunny Stream, or Mux as alternatives to YouTube/Vimeo. These services are designed for self-hosted-like video delivery without the drawbacks, and they integrate easily with WordPress via embed codes or plugins.
Audio: WordPress Podcast and Music Files
WordPress supports native audio embedding with its built-in [audio] shortcode and the Audio block in Gutenberg:
[audio src="/wp-content/uploads/podcast-episode-42.mp3"]
Recommended Audio Format: MP3
MP3 is the safest choice for WordPress audio:
- Universal browser support
- All podcast directories accept it
- WordPress generates audio player automatically
- Compact file size at 128-192 kbps
Convert audio files to MP3 before uploading:
- WAV to MP3 for uncompressed recordings
- MP3 compressor for reducing existing MP3 file sizes
Podcast Hosting Consideration
Like video, dedicated podcast hosting (Buzzsprout, Transistor, Podbean) is usually better than self-hosting audio in WordPress. These services provide:
- RSS feed management
- Distribution to Apple Podcasts, Spotify, Google Podcasts
- Analytics and download tracking
- Bandwidth optimization
If you use a podcast host, embed episodes in WordPress via their provided player embed code.
Documents: PDF and Office Files
PDF: The Gold Standard
PDF is the most common document format on WordPress sites. Use cases include:
- Downloadable guides, whitepapers, and ebooks
- Menus, catalogs, and brochures
- Forms and applications
- Terms of service, privacy policies
Before uploading PDFs:
- Compress using the PDF compressor -- Reduce scanned documents from 20+ MB to 2-3 MB
- Optimize for web -- Ensure the PDF has fast web view enabled (linearized)
- Add metadata -- Title, author, and description improve SEO and accessibility
Convert documents to PDF before uploading:
- Word to PDF for reports and articles
- PowerPoint to PDF for presentations
- Excel to PDF for data tables
Embedding PDFs in WordPress
WordPress does not natively preview PDFs inline. Options:
Gutenberg File block -- Provides a download link (no preview)
Google Docs Viewer embed:
<iframe
src="https://docs.google.com/viewer?url=YOUR_PDF_URL&embedded=true"
width="100%"
height="600"
frameborder="0"
></iframe>
PDF Embedder plugin -- Popular plugin for inline PDF viewing with navigation
For PDF accessibility requirements, the PDF accessibility guide covers compliance standards.

WordPress Performance Impact of Media Files
Every media file you upload affects your site's performance:
| File Type | Performance Impact | Mitigation Strategy |
|---|---|---|
| Unoptimized images | Slow page load, high bandwidth | Compress before upload, use WebP, lazy load |
| Self-hosted video | Very high bandwidth, storage costs | Embed from YouTube/Vimeo instead |
| Large PDFs | Slow downloads, high bandwidth | Compress with PDF compressor |
| Unoptimized audio | Moderate bandwidth impact | Use MP3 at 128-192 kbps, use podcast host |
| Too many image sizes | Disk space consumption | Disable unused sizes in Settings > Media |
Essential Performance Plugins
- ShortPixel / Smush / Imagify -- Automatic image optimization on upload
- WP Super Cache / W3 Total Cache -- Caching for faster page loads
- Autoptimize -- Minifies CSS, JS, and HTML
- Lazy Load by WP Rocket -- Defers off-screen image loading
Enabling Additional File Types
If you need to upload a file type WordPress blocks, you have several options:
Method 1: wp-config.php (Allows All Types)
define('ALLOW_UNFILTERED_UPLOADS', true);
Warning: This disables all file type checks and is a security risk. Only use on sites where all admin users are trusted.
Method 2: functions.php (Whitelist Specific Types)
function add_custom_mime_types($mimes) {
$mimes['svg'] = 'image/svg+xml';
$mimes['json'] = 'application/json';
$mimes['md'] = 'text/markdown';
$mimes['epub'] = 'application/epub+zip';
return $mimes;
}
add_filter('upload_mimes', 'add_custom_mime_types');
Method 3: Use a Plugin
Plugins like "WP Add Mime Types" or "File Upload Types" provide a UI for managing allowed file types without code.
WordPress Media Conversion Workflow
Here is the recommended workflow for preparing files before uploading to WordPress:
Images
- Resize to maximum needed dimensions (usually 1920px wide)
- Convert to WebP or JPEG using the image compressor
- Target 80-200 KB per image
- Add descriptive filenames (not IMG_4532.jpg)
- Upload and add alt text in WordPress
Videos
- Convert to MP4 (H.264) using the MP4 converter
- Compress to reasonable size with the video compressor
- Upload to YouTube/Vimeo
- Embed in WordPress using the URL
Documents
- Convert to PDF using the appropriate converter
- Compress with the PDF compressor
- Upload to WordPress Media Library
- Link using the File block
Audio
- Convert to MP3 using the WAV to MP3 converter
- Compress to 128-192 kbps
- Upload to podcast host or WordPress
- Embed using the Audio block
Related Resources
- Optimize Images for Website -- Comprehensive image optimization guide
- How to Convert Word to PDF -- Document conversion for WordPress
- Best Video Format for Social Media 2026 -- Video format best practices
- Web Browser File Format Support -- What formats browsers can play
- How to Reduce PDF File Size -- PDF compression techniques
Summary
WordPress media management comes down to three principles: use the right format (WebP/JPEG for images, MP4 for video, MP3 for audio, PDF for documents), optimize file size before uploading (compress everything), and let specialized services handle heavy lifting (YouTube for video, podcast hosts for audio). Following these practices keeps your WordPress site fast, your storage manageable, and your visitors happy.



