nHD Placeholder Video (640×360)
Generate 640×360 placeholder videos instantly via URL.16:9 aspect ratio, 10-second duration, MP4 H.264.
About nHD Resolution
nHD (640×360) emerged as a practical compromise between video quality and file size during the early smartphone era. The resolution sits at exactly one-quarter of Full HD, making it computationally efficient for transcoding pipelines that need to generate multiple quality tiers. While newer devices have moved beyond nHD for primary playback, it remains relevant for bandwidth-constrained scenarios: mobile networks in developing regions, IoT displays with limited processing power, and fallback streams in adaptive bitrate delivery. Video platforms like YouTube still generate 360p variants as their lowest quality option.
Video Preview
Direct URL
Copy this URL to use your nHD placeholder video:
https://placeholdervideo.dev/640x360Technical Specifications
- Resolution
- 640 × 360 pixels
- Aspect Ratio
- 16:9
- Category
- landscape
- Duration
- 10 seconds
- Format
- MP4 (H.264, AAC-LC silent audio)
- Frame Rate
- 30 fps
- Approx. MP4 Size
- 174 KB-313 KB
- Generation Time
- usually under 1 second uncached; repeat requests should hit cache
- Video Codec
- H.264 / AVC, Baseline profile, yuv420p
- Audio Codec
- AAC-LC silent stereo, 48 kHz
Copy-Paste Use Cases
Use this 640×360 sample MP4 URL as a stable fixture in browser, end-to-end, and media pipeline tests. For broader examples, see the sample MP4 URL guide.
HTML Video
<video
controls
preload="metadata"
width="640"
height="360"
poster="https://placeholdervideo.dev/poster/640x360"
>
<source src="https://placeholdervideo.dev/640x360" type="video/mp4" />
</video>Playwright / Cypress
// Playwright: assert the browser sees real video metadata.
const metadata = await page.locator('video').evaluate((node) => {
const video = node as HTMLVideoElement
video.src = 'https://placeholdervideo.dev/640x360'
video.load()
return new Promise<{ width: number; height: number; duration: number }>((resolve) => {
video.addEventListener('loadedmetadata', () => {
resolve({
width: video.videoWidth,
height: video.videoHeight,
duration: Math.round(video.duration)
})
}, { once: true })
})
})
expect(metadata).toEqual({ width: 640, height: 360, duration: 10 })
// Cypress: attach the same fixture URL in an existing player test.
cy.get('video')
.invoke('attr', 'src', 'https://placeholdervideo.dev/640x360')
.then(() => cy.get('video')[0].load())curl / ffprobe
curl -L -o placeholder-640x360.mp4 https://placeholdervideo.dev/640x360
ffprobe -v error \
-select_streams v:0 \
-show_entries stream=codec_name,width,height,pix_fmt \
-show_entries format=duration \
-of json placeholder-640x360.mp4Response Data
| Content-Type | video/mp4 |
| Cache-Control | public, max-age=86400, immutable |
| Accept-Ranges | bytes |
| Access-Control-Allow-Origin | * |
| X-RateLimit-Limit | 60 standard / 10 heavy per minute |
Browser compatibility: Chrome, Edge, Safari, Firefox, iOS Safari, Android Chrome, HTML5 video players such as video.js and Plyr.
When to Use 640×360
Use 640×360 placeholders when testing adaptive streaming implementations that need a low-quality tier. It's the standard resolution for preview thumbnails in video editing software, picture-in-picture overlays, and secondary video feeds in multi-camera setups. If you're building for feature phones or embedded systems with hardware decoding limitations, nHD provides a safe baseline that virtually any device can handle.
Integration Examples
HTML
<video src="https://placeholdervideo.dev/640x360" width="640" height="360" controls></video>JavaScript Fetch
fetch('https://placeholdervideo.dev/640x360')
.then(res => res.blob())
.then(blob => {
const url = URL.createObjectURL(blob)
document.querySelector('video').src = url
})cURL
curl -O https://placeholdervideo.dev/640x360Technical Considerations
At 640×360, video bitrates typically range from 400-800 kbps for acceptable quality. This keeps file sizes around 500KB-1MB for a 10-second clip. The resolution works well with older H.264 profiles (Baseline, Main) found in legacy hardware decoders. For web delivery, 360p streams consume roughly 0.5 GB per hour, making them practical for users on metered connections.
Common Questions
- Is 640x360 the same as 360p?
- Yes. 360p refers to the vertical resolution (360 pixels), and 640×360 is the standard 16:9 implementation of 360p.
- Why use 360p when higher resolutions exist?
- Bandwidth efficiency. 360p uses 4× less data than 720p, making it essential for adaptive streaming fallbacks and users on slow connections.
Use Cases for nHD
- Web Development — Test HTML5 video elements, responsive containers, lazy loading, and player integrations without managing video files.
- Playwright Video Testing — Use deterministic MP4 URLs in Playwright checks for HTML5 playback, metadata loading, screenshots, and video UI states.
Related Guides
Learn more about generating videos programmatically in the API documentation.