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/640x360

Technical 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.mp4

Response Data

Content-Typevideo/mp4
Cache-Controlpublic, max-age=86400, immutable
Accept-Rangesbytes
Access-Control-Allow-Origin*
X-RateLimit-Limit60 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/640x360

Technical 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

Related Guides

Learn more about generating videos programmatically in the API documentation.