Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

To bulk convert HTML to JPG, render each page in a real browser, wait until its content is ready, and save the result with an explicit JPEG format. Chrome Headless is convenient for a one-off capture, while Puppeteer or Playwright gives you a repeatable loop with JPEG quality, viewport, full-page, and readiness controls. The examples below cover remote URLs, local files, inline HTML, predictable filenames, failures, and output checks.

What “HTML to JPG” actually requires

HTML is a document, not an image file. A converter must first execute the page in a browser engine so that CSS, fonts, images, JavaScript, and responsive layout are resolved. The browser then rasterizes the rendered page and encodes the pixels as JPEG.

This distinction matters in a batch job. Saving the source text with a .jpg extension does not convert it, and a browser’s default screenshot format may be PNG. Puppeteer’s documented default is PNG, so set type: 'jpeg' whenever JPEG is required. Its quality setting accepts 0–100 and applies to JPEG, not PNG.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose the right bulk-conversion method

Method Best for Input JPEG control Batch handling
Chrome Headless CLI One-off or shell-driven captures URL or page loaded by Chrome The documented --screenshot workflow is PNG-oriented; use an image converter afterward if you must keep the CLI route Shell loops and external error handling
Puppeteer Repeatable Node.js jobs URLs, local files, or generated pages Explicit JPEG type, quality, clipping, viewport, and full-page capture Native JavaScript loops, logging, retries, and validation
Playwright Teams already using Playwright Pages opened in its browser context JPEG screenshot controls, including quality Scripted batches and browser contexts
Browsershot PHP applications URL, local file path, or HTML string Delegates rendering to Puppeteer and headless Chrome Integrates with your PHP queue or command

There is no documented, general speed or fidelity winner among these tools. Rendering depends on the page, browser version, fonts, network assets, and scripts, so process a representative sample before a large run.

#1 Best Overall
Tengchi RCA to HDMI Converter, AV to HDMI Adapter
  • RCA Female to HDMI Video Converters Adapter : The cable is used to convert analog composite input to HDMI 1080p output, displayed on a 1080p HD TV/TV/monitor.
  • Input ports: 1xRCA Female (Yellow, White, Red), Output ports: 1xHDMI 1.3 1080p. NOT support 3D and 4K, NOT support HDMI Converts to AV
  • AV to HDMI Converter: Plug and Play, Easy to Install and Operate, Powered by External USB Cable. Note: Please hook up the USB power cable (included) to 5V 1Apower source during use (not included power supply ).
  • Support PAL, NTSC3.58, NTSC4.43, SECAM, PAL/M, PAL/N standard TV formats input. For PS2,PS3,Xbox,N64,STB, VHS, VCR, DVD Players and other devices with standard composite AV input.
  • You Will Get : 1x RCA Female TO HDMI Converter, 1xHDMI cable, 1xUSB cable, 1xUser Manual. ONE YEAR WARRANTY - if you are not satisfied for any reason whatsoever, do not hesitate to contact us .

Prepare a reliable batch

  • Install a supported Chrome or Chromium runtime and the automation library you select.
  • Decide whether each output is the initial viewport or the entire document.
  • Choose a fixed viewport so responsive breakpoints do not change between files.
  • Define a readiness rule: a navigation state, a selector that must appear, or a controlled delay.
  • Create a one-to-one input/output naming scheme and a separate failure log.
  • Keep source URLs or file paths with the output manifest so a failed image can be reproduced.

Bulk conversion with Puppeteer (Node.js)

The following script opens a list of URLs, waits for network activity to settle, captures full-page JPEGs, and continues after an individual failure. The loop and logging are workflow code; Puppeteer’s documented screenshot options provide the format, quality, path, and fullPage controls.

import puppeteer from 'puppeteer';
import fs from 'node:fs/promises';

const inputs = [
  'https://example.com/',
  'https://example.org/docs'
];

const browser = await puppeteer.launch({headless: true});
const page = await browser.newPage();
await page.setViewport({width: 1440, height: 900, deviceScaleFactor: 1});

for (let i = 0; i < inputs.length; i++) {
  const url = inputs[i];
  const output = `jpg/page-${String(i + 1).padStart(4, '0')}.jpg`;
  try {
    await page.goto(url, {waitUntil: 'networkidle2', timeout: 90000});
    await page.screenshot({
      path: output,
      type: 'jpeg',
      quality: 85,
      fullPage: true
    });
    console.log(`OK ${url} -> ${output}`);
  } catch (error) {
    console.error(`FAILED ${url}: ${error.message}`);
    await fs.appendFile('conversion-errors.log', `${url}t${error.message}n`);
  }
}

await browser.close();

Create the output directory before running the script (for example, mkdir -p jpg). A quality of 85 is a starting choice, not a universal optimum: inspect text, gradients, and file size for your pages.

Local HTML files

Use a file:// URL when the page references local assets with paths that Chrome can read. Resolve the absolute path so navigation is unambiguous:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import path from 'node:path';
const fileUrl = `file://${path.resolve('pages/invoice.html')}`;
await page.goto(fileUrl, {waitUntil: 'networkidle2'});
await page.screenshot({path: 'jpg/invoice.jpg', type: 'jpeg', quality: 90, fullPage: true});

Local pages that depend on web fonts, APIs, or cross-origin resources may render differently or incompletely when opened from disk. If so, serve the directory through a local HTTP server and capture its http://localhost URL instead.

Inline HTML

For generated documents, write the HTML into the page and capture it without creating a temporary file:

await page.setContent(htmlString, {waitUntil: 'networkidle2'});
await page.screenshot({path: 'jpg/generated.jpg', type: 'jpeg', quality: 85, fullPage: true});

Wait for content that appears after navigation

networkidle2 is useful when a page becomes quiet, and Google’s Puppeteer example uses that navigation condition. It is not a guarantee that every application is visually finished: analytics, long polling, advertisements, and delayed animations can keep a page busy or change it after capture. For a known component, wait for the component itself:

Rank #2
DigitConvert RCA to HDMI Converter, AV to HDMI Adapter, 1080P Mini RCA Composite CVBS Audio Video Converter Supports PAL/NTSC Compatible with PC/Laptop/Xbox /PS4 /TV/STB/VHS/VCR/Blue-Ray
  • RCA to HDMI Converter: Converts analog RCA composite (Yellow, White, Red) input to HDMI 720P/1080P output on HDTVs/Monitors. Only support RCA to HDMI. NOT Support HDMI to RCA!
  • Plug to Play: AV to HDMI converter doesn't need extra drivers, just plug and play, easy to use. Please hook up the USB power cable (included) to 5V power adapter when using this RCA to HDMI adapter.
  • Wide Compatibility: This av hdmi converter supports for all standard TV formats such as PAL, NTSC3.58, NTSC4.43, SECAM, PAL/M, PAL/N. Provide advanced signal processing and make videos come to life.
  • Extensive Use: Composite to HDMI converter widely applied to PS2, PS3, Xbox, N64, WII, STB, VHS, VCR, DVD Players and other devices with standard composite AV input.
  • Attention & Package: Please ensure to connect this rca to hdmi converter to power source to make it work. Package include: 1x RCA to HDMI Converter, 1* Micro USB cable (adapter not included), 1*User Manual. Please free feel to contact us if you have any product problems.
await page.goto(url, {waitUntil: 'domcontentloaded', timeout: 90000});
await page.waitForSelector('[data-render-complete]', {timeout: 30000});
await page.screenshot({path: output, type: 'jpeg', quality: 85, fullPage: true});

Chrome Headless for a quick capture

Chrome’s command-line interface documents --screenshot and --window-size. A typical viewport capture is:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
chrome --headless --screenshot=page.png --window-size=1440,900 https://example.com/

The documented CLI example produces PNG output. If the batch must end in JPG, either use Puppeteer/Playwright with an explicit JPEG type or pass the PNG files through a separate image-conversion step. Chrome’s --timeout option limits how long it waits before taking the shot; a timeout can therefore capture a page that is still loading.

For multiple inputs, put URLs in a text file and loop over them in your shell, assigning a sanitized, unique output name to each. Check the process exit status and preserve a failure log; a shell loop alone does not prove that every page rendered correctly.

PHP with Browsershot

Spatie Browsershot documents URL input, local-file input through htmlFromFilePath, and inline HTML through html. It runs Puppeteer with headless Chrome, so the same browser concerns apply: set JPEG output, choose viewport or full-page behavior, and wait for dynamic content before saving.

use SpatieBrowsershotBrowsershot;

Browsershot::url('https://example.com')
    ->windowSize(1440, 900)
    ->fullPage()
    ->setScreenshotType('jpeg')
    ->setScreenshotQuality(85)
    ->save('jpg/example.jpg');

Method names can vary with the Browsershot version you install; check its current README for the exact option names in your release.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Viewport versus full-page JPGs

Viewport capture

A viewport image records only the visible browser area. It is appropriate for thumbnails, above-the-fold previews, and consistent cards in a catalog. Use a fixed width and height and expect responsive CSS to follow that viewport.

Rank #3
RCA to HDMI Converter, Wenter 1080P AV to HDMI Converter, Mini Composite CVBS Audio Video Adapter for VCR/VHS/Xbox/PS3/N64/Wii/Blue-Ray DVD Players (with RCA Male Cable & HDMI Cable)
  • Connect Classic RCA Devices to HDMI Displays: Bring older AV equipment back into use by converting yellow, white and red composite RCA signals into HDMI output for newer TVs, monitors and projectors. Choose between 720P and 1080P output at 60Hz to match your display. Please note that this av to hdmi adapter is built specifically for connecting an RCA/AV source to an HDMI display; it cannot convert an HDMI source to RCA/AV.
  • Complete 3-Cable Set Included: Includes separate RCA, HDMI and Micro USB cables for video/audio connection, HDMI output and power. The RCA and HDMI cables are detachable for flexible placement and use with compatible equipment. USB power is required for operation. A Micro USB cable is included; a 5V/1A power adapter is not included.
  • Selectable 720P and 1080P Output: Use the built-in resolution switch to select 720P or 1080P output at 60Hz based on your TV or monitor. No software or drivers are required. Connect the RCA source, HDMI display and USB power, then select the desired output resolution.
  • Compatibility with Legacy AV Devices: Compatible with RCA-output VCRs, VHS players, DVD players, set-top boxes and karaoke systems, as well as compatible PS1, PS2, PS3, Xbox, Wii, N64, SNES and GameCube systems using RCA/AV output. Supports PAL, NTSC3.58, NTSC4.43, SECAM, PAL/M and PAL/N analog input formats.
  • HDMI Output Based on the Original Source:Converts an analog RCA signal to HDMI output with selectable resolution up to 1080P. The av to hdmi converter changes the signal format but does not turn lower-resolution VHS footage or classic game graphics into native HD content. Final picture quality depends on the original source, connected equipment and display. For stable operation, connect the included USB power cable to a 5V/1A USB power source.

Full-page capture

Puppeteer’s fullPage option defaults to false. Setting it to true captures the document’s full scrollable height. Long pages can create very tall JPEGs, and lazy-loaded images may not exist until the page is scrolled. If the page uses lazy loading, scroll through it or otherwise trigger the loading behavior before the final screenshot, then verify that images are present.

Output validation and batch reliability

  1. Check the file exists. A successful navigation does not automatically mean a screenshot was written to the intended directory.
  2. Check the actual format. Inspect the file signature or use an image library; do not trust the extension alone.
  3. Check dimensions. Confirm the width, height, and full-page extent match the job specification.
  4. Open sample images. Look for cookie dialogs, clipped content, missing fonts, blank sections, and unfinished animations.
  5. Record failures separately. Keep the original input, error text, and retry count.
  6. Retry selectively. Re-run transient network failures, but investigate deterministic errors such as invalid URLs or blocked resources.

Common problems and fixes

The output is PNG, not JPG

Puppeteer defaults to PNG. Set type: 'jpeg'; set quality only for JPEG. The Chrome CLI example is also PNG-oriented, so convert those files afterward or switch to an automation API.

The image shows only the top of the page

Viewport capture is the default outcome. Set fullPage: true and confirm the resulting dimensions. For extremely long documents, consider intentional clipping or a different document format.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Text or images are missing

The screenshot ran before the page was ready, a request failed, or a lazy asset was never triggered. Wait for a meaningful selector, use an appropriate navigation condition, allow fonts and images to load, and test the page again.

Chrome times out

Some pages never reach an idle network state because of streaming or tracking requests. Use a bounded timeout plus a page-specific readiness selector, rather than waiting indefinitely.

Local assets do not appear

Verify absolute paths and file permissions. If the document expects HTTP behavior or remote resources, serve it locally over HTTP and capture that URL.

Rank #4
GINGIN RCA to HDMI Converter, AV to HDMI Converter for TV/PC/N64/Wii/PS1/PS2/PS3/STB/Xbox/VHS/VCR/Blue-Ray DVD Players, with 3.3ft RCA and HDMI Cables
  • RCA to HDMI Converter: Converts analog RCA composite (Yellow, White, Red) input to HDMI 720P/1080P (60HZ) output, displayed on smart TV, projector and HDTV monitor. Making video come alive, giving the most realistic HD visual experience. Important Note: RCA inputs for HDMI output only!
  • Easy to Use: GINGIN Mini RCA to HDMI Adapter need no extra driver, portable, flexible, just plug and play. Please hook up the USB power cable (included) to 5V 1A power adapter during use.
  • Widely Used: This AV to HDMI Adapter is widely applied to PS1, PS2, PS3, Xbox, N64, WII, STB, VHS, VCR, DVD Players and other devices with standard composite AV input.
  • Broad Compatibility: This Audio Video to HDMI Converter supports source formats of PAL, NTSC3.58, NTSC4.43, SECAM, PAL/M, PAL/N standard TV. Provide advanced signal processing with great precision, colors, resolutions, and details.
  • Package&After-sales Service: Package Include: 1*CVBS to HDMI Converter, 1*USB Power Cable(2.6ft/0.8m), 1*HDMI Cable(3.3ft/1m), 1*Male RCA Cables(3.3ft/1m), 1*User Manual. We provide 18 months after-sales service and 30 days no hesitate money back.

Layouts differ between runs

Fix the viewport and device scale factor, use the same browser environment, and control timezone, locale, fonts, and network dependencies where your automation setup permits. The official documentation does not promise identical rendering across environments.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

ScreenshotNeo accepts one GET request and returns a PNG, JPEG, WebP, or PDF. It can capture URLs, remove cookie-consent banners, newsletter popups, and chat widgets before the shot, and report whether a response was billed through its headers. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.

See the ScreenshotNeo API documentation for the full option set. A JPEG request can be made with:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

The service also supports full-page capture, element selectors, dark mode, device presets, retina scale, custom CSS and JavaScript, click actions, wait conditions, blocking rules, headers, cookies, user agents, authorization, timezone and geolocation, resizing, chosen cache TTLs, signed links, asynchronous webhooks, bulk capture of up to 100 URLs per call, a usage API, and an OpenAPI specification. Parameter names used by other screenshot APIs are accepted to ease migration.

In Python:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

In Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

The Free plan includes 1,000 screenshots each month with no card. Paid plans start at $5 for 3,000 shots; every feature is available on every plan. Create a free ScreenshotNeo account.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Cost, performance, and deployment considerations

Browser rendering is the expensive part of a batch: each page may execute JavaScript, download assets, and wait for readiness. Reuse one browser process and a controlled number of pages instead of launching a new browser for every URL. Limit concurrency to what your CPU, memory, and target sites can handle, and keep timeouts finite so one stalled page cannot block the queue.

Cache inputs whose content has not changed, but invalidate the cache when CSS, fonts, data, or viewport settings change. For repeatability, pin your automation and browser versions in deployment, record the viewport and screenshot options in the manifest, and retain failed inputs for later retries. None of the cited documentation establishes a universal throughput, success rate, or cross-tool fidelity benchmark.

Best Value
ABLEWE RCA to HDMI,AV to HDMI Converter, 1080P Mini RCA Composite CVBS Video Audio Converter Adapter Supporting PAL/NTSC for TV/PC/ PS3/ STB/Xbox VHS/VCR/Blue-Ray DVD Players
  • RCA to HDMI Converter: Converts analog RCA composite (Yellow, White, Red) input to HDMI 720P/1080P (60HZ) output,displayed on HDTV/Monitor,which can bring back your childhood memories.
  • Plug to Play: ABLEWE Mini RCA to HDMI converter no extra drivers need, just plug and play,easy to use.Please hook up the USB power cable (included) to 5V power source during use.
  • Wide Compatibility: Support source formats of PAL, NTSC3.58, NTSC4.43, SECAM, PAL/M, PAL/N standard TV. Provide advanced signal processing with great precision, colors, resolutions, and details.
  • Widely Used:Widely applied to PS2,PS3,Xbox,N64, WII, STB, VHS, VCR, DVD Players and other devices with standard composite AV input.
  • Attention & Package:Please ensure to connect this rca to hdmi converter to power source to make it work.Package include:1*RCA to HDMI Converter,1*usb power cable(adapter not included),1*User Manual.

Frequently Asked Questions

Can I convert HTML to JPG without opening a browser?

Not reliably for modern pages. CSS layout, web fonts, images, and JavaScript need a browser renderer; after rendering, the pixels can be encoded as JPEG.

Should I use PNG or JPEG for text-heavy pages?

Use JPEG when the required deliverable is JPG and choose its quality deliberately. Inspect small text and sharp edges, because JPEG is lossy; PNG remains the documented default in Puppeteer.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How do I preserve transparency?

JPEG has no transparency channel. Choose a solid page background before capture or use PNG/WebP when transparency is required.

Why do two machines produce different screenshots?

Browser version, installed fonts, viewport, device scale, locale, timezone, network resources, and page timing can all change layout or content. Standardize those inputs and validate representative pages.

The Bottom Line

For dependable bulk HTML-to-JPG conversion, use Puppeteer or Playwright with an explicit JPEG type, fixed viewport, page-specific readiness checks, full-page settings when needed, and output validation. Use Chrome Headless for simple PNG-oriented captures, or ScreenshotNeo when you want a managed API and MCP workflow without maintaining browser setup.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.