URL2PNG’s documented Node.js workflow builds a signed v6 screenshot URL and then either pipes the image stream to a file or sends it to an HTTP response. The signature depends on the exact query string, so keep the API secret server-side and preserve the same encoded query representation when creating the token and making the request.
Install and check the Node.js package
URL2PNG’s Quickstart Guide documents a CommonJS package pattern using url2png. The vendor links to the url2png npm package listing, but its current release version and maintenance status are not established here. Before using it in a production project, inspect the live registry metadata and repository, and confirm that the package is compatible with your Node.js version.
As an Amazon Associate I earn from qualifying purchases.
If you use the package, install it with your project’s package manager after checking those details. The example below assumes the package is installed and that you have an API key and private key from URL2PNG. Do not put the private key in browser-side JavaScript or expose it to users.
Free tools Windows power users keep installed
One-click scans. No signup required.
Build a URL2PNG request and save the screenshot
This vendor-documented CommonJS example builds a screenshot URL and pipes the returned image stream to a local file. The snippet follows the vendor’s documented pattern; it has not been independently run or tested.
#1 Best Overall
- The Anker Advantage: Join the 65 million+ powered by our leading technology.
- Instant Internet: Connect to the internet instantly from virtually any USB-C 3.0 device, and enjoy stable connection speeds of up to 1 Gbps.
- Lightweight and Compact: The space-saving and portable design measures just over half an inch thick and weighs about the same as a AA battery.
- Premium Build: Features a sleek aluminum exterior and braided-nylon cable to complement the design of high-end devices.
- What You Get: PowerExpand USB-C to Gigabit Ethernet Adapter, welcome guide, 18-month worry-free warranty, and friendly customer service.
const url2png = require('url2png')('API_KEY', 'PRIVATE_KEY');
const options = {
viewport: '900x600',
thumbnail_max_width: 400,
protocol: 'http'
};
const imageUrl = url2png.buildURL('google.com', options);
const fs = require('fs');
url2png.readURL('google.com', options)
.pipe(fs.createWriteStream('google.png'));
buildURL() is useful when you need the request URL itself, for example to inspect or pass it to another server-side component. readURL() returns a stream that can be piped to a file. The example sets protocol: 'http' only to demonstrate an option; do not downgrade a target site from HTTPS unless that is explicitly intended.
In production, validate target URLs according to your application’s needs, handle stream and request errors, set timeouts, and choose suitable response headers. The short vendor example does not define those application-level safeguards.
Understand v6 signing before constructing requests yourself
URL2PNG describes its v6 request as an API key, security token, image path, and query string containing the encoded target URL and capture options. The token is an MD5 hash of the entire query string plus the account secret. As the URL2PNG Quickstart Guide puts it, “The token is the md5 hash of the entire query string and your SECRETKEY.”
Rank #2
- USB-C Meets 1000Mbps Ethernet in Seconds:UGREEN usb c to ethernet adapter supports fast speeds up to 1000Mbps and is backward compatible with 100/10Mbps network. Perfect for work, gaming, streaming, or downloading with a stable, reliable wired connection
- Extend a Ethernet Port for Your Device:This ethernet to usb c adds a Gigabit RJ45 port to your device. It’s the perfect solution for new laptops without built-in Ethernet, devices with damaged LAN ports, or when WiFi is unavailable or unstable
- Plug and Play: This Ethernet adapter is driver-free for Windows 11/10/8.1/8, macOS, Chrome OS, and Android. Drivers are required for Windows XP/7/Vista and Linux, and can be easily installed using our instructions. LED indicator shows status at a glance
- Small Adapter, Big Attention to Detail: The usb c to ethernet features a durable aluminum alloy case for faster heat dissipation than plastic. Its reinforced cable tail and wear-resistant port ensure long-lasting durability. Compact size and easy to carry
- Widely Compatible: The usbc to ethernet adapter is compatible with most laptops, tablets, smartphones, Nintendo Switch, and Steam Deck with USB-C or Thunderbolt 4/3 port, like MacBook Pro/Air, XPS, iPhone 17/16/15 Pro/Pro Max, Mac Mini, Chromebook, iPad
If you bypass the package and construct the v6 request URL directly, the representation used to generate the token must match the query string sent in the request. A change in URL encoding, parameter order, or other query-string formatting can result in a different signature. Keep the secret key on your server and do not expose it in a public page or client-side bundle.
Choose capture settings for the page and use case
URL2PNG’s documented options let you trade off image dimensions, freshness, and when the capture is taken. The options below and their defaults come from its Quickstart Guide; output still depends on the target page and the service’s behavior.
| Setting | What it controls | Documented behavior |
|---|---|---|
viewport |
Browser viewport width and height, expressed as a string such as 900x600. |
The advanced-options section documents a default of 1480x1037. |
fullpage |
Whether the service attempts to capture the entire document canvas rather than just the viewport. | true requests full-page capture; the documented default is viewport-only. The guide says it “Will attempt to capture entire document canvas.” |
thumbnail_max_width |
Constrains the output screenshot width. | Set a maximum width appropriate to the downstream display or storage use. |
unique |
Requests a fresh screenshot by varying the value. | The guide suggests using a timestamp as a possible varying value. A changing value can prevent reuse of an otherwise matching cached capture. |
say_cheese |
Waits for a page-specific readiness marker. | true delays capture until the page contains <div id='url2png-cheese'></div>. |
delay |
Adds a fixed wait before capture. | The guide describes it as additional waiting after document readiness and asset loading. |
custom_css_url |
Injects a stylesheet into the page. | Use when the capture needs presentation adjustments from a stylesheet URL. |
user_agent and accept_languages |
Change request headers used for the capture. | Set them when the target’s response or rendering should reflect a specific user agent or language preference. |
| TTL | Controls how long a screenshot may be cached. | The documented default is 2,592,000 seconds (30 days). |
Viewport-only or full-page
Use viewport-only output when the goal is a representative visible screen or a compact preview. Set fullpage=true when you need the full document canvas. Full-page is documented as an attempt, not a guarantee that every page’s complete or dynamically extended content will appear.
Rank #3
- Adapter for converting a USB 3.1 Type-C port to a RJ45 Gigabit Ethernet port
- Integrated Ethernet port supports 10M/100M/1000M bandwidth; offers instant Internet connection to the host
- USB-C input allows for reversible plugging; offers complete compatibility with current computers and devices; compatible with Nintendo Switch
- Ready to use, right out of the box; no external power adapter needed
- Slim, compact size and lightweight aluminum housing for easy portability
Fixed delay or readiness marker
A fixed delay is straightforward when a page needs a known extra wait, but it cannot prove that a particular asynchronous component has finished. With say_cheese=true, your page can provide the documented url2png-cheese element when the desired state is ready. Both controls depend on what the target page actually does; neither promises that every asynchronous state is captured.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Fresh output or cache reuse
Use a varying unique value when you need a fresh screenshot instead of reusing a cached one. If the same target and options can safely reuse a prior image, leave the request stable and set TTL to suit the freshness requirement. The vendor’s documented default TTL is 30 days.
Stream the screenshot to an HTTP response
The URL2PNG example also pipes readURL() to an HTTP response. In an application server, set the content type and other response headers appropriate to the output, validate input, and handle errors before committing a response. The snippet below shows the documented streaming shape; adapt it to your framework’s request and response APIs.
Rank #4
- 𝐇𝐢𝐠𝐡-𝐒𝐩𝐞𝐞𝐝 𝐔𝐒𝐁-𝐂 𝐄𝐭𝐡𝐞𝐫𝐧𝐞𝐭 𝐀𝐝𝐚𝐩𝐭𝐞𝐫 - Instantly transform your laptop or tablet’s USB-C port into a reliable wired connection with a 10/100/1000 Mbps RJ45 Ethernet port. Perfect for replacing unstable Wi-Fi in situations that require uninterrupted connectivity, such as online meetings, gaming, and media streaming.
- 𝐔𝐒𝐁-𝐂 𝟑.𝟎 𝐟𝐨𝐫 𝐅𝐚𝐬𝐭𝐞𝐫, 𝐌𝐨𝐫𝐞 𝐒𝐭𝐚𝐛𝐥𝐞 𝐂𝐨𝐧𝐧𝐞𝐜𝐭𝐢𝐨𝐧𝐬 - Experience full Gigabit Ethernet performance over your laptop’s USB-C 3.0 port and elevate your browsing experience to transfer files, play games, video chat, and stream HD videos seamlessly. (To reach 1Gbps, please use CAT6 or up Ethernet cables.)
- 𝐔𝐥𝐭𝐫𝐚-𝐂𝐨𝐦𝐩𝐚𝐜𝐭 𝐚𝐧𝐝 𝐅𝐨𝐥𝐝𝐚𝐛𝐥𝐞 𝐃𝐞𝐬𝐢𝐠𝐧 - At just 2.8 x 1.0 x 0.6 inches, the UE300C slips easily into your laptop bag or pocket. The lightweight yet durable build makes it perfect for travel, remote work, or quick setup in conference rooms.
- 𝐏𝐥𝐮𝐠 𝐚𝐧𝐝 𝐏𝐥𝐚𝐲- No driver required for Windows 11/10/8.1/8/7, macOS, Chrome OS, and Linux (Ubuntu). Simply connect and enjoy instant wired internet access without complicated setup.
- 𝐁𝐫𝐨𝐚𝐝 𝐃𝐞𝐯𝐢𝐜𝐞 𝐂𝐨𝐦𝐩𝐚𝐭𝐢𝐛𝐢𝐥𝐢𝐭𝐲- Works seamlessly with most USB-C devices, including MacBook Pro/Air, iPad Pro, Dell XPS, Surface Laptop, Chromebook, and more—making it a versatile network upgrade for home, office, or on-the-go use.
const url2png = require('url2png')('API_KEY', 'PRIVATE_KEY');
const options = { viewport: '900x600' };
const stream = url2png.readURL('https://example.com', options);
stream.on('error', (err) => {
// Log the error and return an appropriate application response.
console.error('URL2PNG capture failed:', err);
});
// In an HTTP handler, set an image content type and pipe to the response.
stream.pipe(res);
Do not assume the response is PNG merely because a filename in a separate example ends in .png; choose and set the format according to the actual URL2PNG request and response behavior you use.
Account for caching, render usage, and cost
URL2PNG’s plans page says a newly generated screenshot counts as one render, while loading a cached screenshot does not count against the plan. It also says screenshots are cached for 30 days by default. These are vendor statements, not independent speed measurements; the plans page describes cached screenshots as “super fast,” which should not be treated as a measured performance benchmark.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteThe plan page reviewed on October 3, 2026 lists monthly allowances and prices including 5,000 fresh screenshots, 20,000 fresh screenshots, and 50,000 fresh screenshots, and prices of $29, $99, and $199 per month. These are figures displayed by URL2PNG, not independent market comparisons. The page also describes paid overages, month-to-month plans, no free account, and contact-based Enterprise terms rather than a displayed fixed Enterprise price. Check the URL2PNG plans page for the current plan-to-price mapping, overage terms, and limits before budgeting; the displayed commercial terms can change.
Best Value
- 【1Gbps LAN to USB-C Adapter】Obtain stable connection speeds up to 1Gbps; downward compatible with 100Mbps/10Mbps networks. Our Type-C to LAN Gigabit Ethernet (RJ45) Network Adapter supports large downloads at maximum speeds without interruption. (To reach 1Gbps, make sure to use CAT6 & up Ethernet cables.)
- 【Reliable & Endurance Connectivity】Designed specifically for plug-and-play connection between USB-C devices and wired network, provides gigabit ethernet connectivity even when wireless connectivity is Inconsistent or over extended.
- 【Thoughtful Design】Compact and lightweight, with a user-friendly non-slip design for easier plugging and unplugging. Braided nylon cable for extra durability. Premium aluminum casing for better heat dissipation. High-quality USB-C connector provides snug connection with your devices for stable signal transfer. Design to make it easy to connect USB peripherals without blocking adjacent USB-C ports
- 【Wide Compatibility】Compatible with iPhone 15/16 Pro/Max, MacBook Pro 16''/15” (2023/2022/2021/2020/2019/2018/2017), MacBook (2019/2018/2017), MacBook Air 13” (2022/2018), iPad Pro (2022/2020/2018); XPS 13/15/17; Surface Book 2; Google Pixelbook, Chromebook, Pixel, Pixel 2; Asus ZenBook. Compatible with Samsung S20/S10/S9/S8/S8+, Note 8/9, Galaxy Tablet Tab A 10.5, and many other USB-C laptops, tablets, and smartphones. (NOT compatible with Nintendo Switch.)
- 【What You Get】 USB C to Ethernet Adapter 1 pack, An effortless 18-month 𝗐𝖺𝗋𝗋𝖺𝗇𝗍𝗒 and 24/7 professional customer service. If you have any questions, don't hesitate to get in touch with us, we solve most issues within 12 hours. Please rest assured we stand behind our products and customers.
For cost planning, estimate how many distinct screenshots your application will generate, how often a changed unique value will force a fresh render, and how much traffic can reuse cached captures. A high cache-reuse rate and frequent forced refreshes have different render implications even if users view the same page the same number of times.
Troubleshoot common integration problems
- Signature or authentication failure: Check that the token was generated from the entire query string and secret, and that the request uses the same encoded query-string representation. Keep credentials server-side.
- The screenshot does not reflect recent page changes: Review TTL and caching behavior. If a new render is required, vary
unique, for example with a timestamp, as the vendor suggests. - A delayed widget or image is missing: A fixed
delaycan add waiting time, whilesay_cheese=truecan wait for the documented page marker. Confirm that the target page reaches the state you expect; neither setting guarantees every asynchronous action completes. - The full page is incomplete:
fullpage=truerequests an attempt to capture the document canvas. Check the target’s page behavior and avoid assuming the option guarantees complete output for every site. - File output is empty or the stream fails: Add stream error handling, verify the request parameters and credentials, and use application-level timeouts. The vendor’s short example does not specify a complete error-recovery strategy.
- The dependency is incompatible or unreliable: Check the current npm package listing, repository activity, and compatibility with your Node.js version before adoption. Current release and maintenance details were not established here.
Or skip the browser setup
With ScreenshotNeo, one GET request can return a screenshot or PDF. Its cleanup accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each cleanup step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed as clean shots. An MCP server exposes screenshot tools for Claude, Cursor, and other MCP clients.
Example cURL request (see the ScreenshotNeo documentation for request options):
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo includes 1,000 screenshots per month free with no card; paid plans start at $5 for 3,000. Sign up for the free plan.
Frequently Asked Questions
Can URL2PNG capture a page after a specific element appears?
Yes. Its documented say_cheese=true option waits for <div id='url2png-cheese'></div> on the page.
Does URL2PNG’s Node.js example use CommonJS or ES modules?
The documented example uses CommonJS with require(); check package compatibility and adapt deliberately if your project uses ES modules.
Quick Recap
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.




