Recommended Free Tools
Use Ferrum to drive a local Chrome or Chromium browser, navigate to the page, and request WebP output with format: "webp". The browser must be installed and discoverable (or supplied through Ferrum’s browser-path option). The example below saves a viewport screenshot as example.webp and always closes the browser, even when navigation or capture fails.
Capture a webpage as WebP in Ruby
Add Ferrum to your Ruby application, install its dependencies with Bundler, and make sure Chrome or Chromium is available to Ferrum.
-
Add this line to your
Gemfile:gem "ferrum" -
Install the bundle:
bundle install -
Create a Ruby file with the following code:
require "ferrum" browser = Ferrum::Browser.new page = browser.create_page begin page.go_to("https://example.com") page.screenshot(path: "example.webp", format: "webp") ensure browser.quit end -
Run it:
ruby capture.rb
The explicit format: "webp" requests WebP encoding. Ferrum also infers a format from a file extension when possible, but specifying the format makes the intended output unambiguous. If neither an extension nor a format identifies another type, Ferrum’s screenshot implementation defaults to PNG.
Choose the part of the page to capture
Ferrum’s screenshot options let you select the viewport, the entire document, one element, or a rectangular region. Use one scope per capture: in Ferrum’s implementation, full: true overrides selector and area, while selector takes precedence over area.
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Visible viewport
Omit full, selector, and area to capture the browser’s current viewport:
page.screenshot(
path: "viewport.webp",
format: "webp"
)
This is appropriate for a hero section, above-the-fold preview, or a screenshot whose dimensions should match the configured browser window.
Full-page screenshot
Pass full: true to capture the document beyond the visible viewport:
page.screenshot(
path: "full-page.webp",
format: "webp",
full: true
)
Full-page capture is not the same as enlarging the viewport. The browser lays out the page and Ferrum captures the resulting document area. Very long pages can produce large images and may expose page-specific issues such as content that only appears after scrolling.
One element by CSS selector
Use selector: with a CSS selector when you need a component rather than the whole page:
page.screenshot(
path: "pricing-card.webp",
format: "webp",
selector: ".pricing-card"
)
The selector must match an element in the loaded DOM. A missing or non-visible element can cause capture to fail or produce an unusable result, so confirm that the page has rendered the component before taking the shot.
Rectangular area
For coordinates relative to the page’s capture surface, provide an area hash:
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
page.screenshot(
path: "region.webp",
format: "webp",
area: { x: 40, y: 120, width: 900, height: 500 }
)
An area is useful when a fixed rectangle is more stable than a selector. Do not combine it with full: true when you need the rectangle; full-page mode wins.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsControl WebP quality and image dimensions
Quality
Ferrum accepts quality: for non-PNG formats. Its documented default is 75 when you do not supply a value. Set it explicitly when your pipeline needs a predictable encoder setting:
page.screenshot(
path: "quality-90.webp",
format: "webp",
quality: 90
)
Quality is an encoding control, not a guaranteed file-size target. The resulting size and appearance depend on the page, dimensions, colors, and selected value. Measure representative pages if storage or transfer limits matter. Browser screenshot quality controls are available for WebP and JPEG; PNG does not use this lossy-quality setting.
Playwright’s browser API documentation describes WebP quality 100 as lossless and lower values as lossy. That terminology is useful background, but it is not a Ferrum-specific validation for every Chrome, Chromium, or deployment combination.
Scale
Ferrum also provides scale:, which is applied while defining the screenshot clip:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
page.screenshot(
path: "scaled.webp",
format: "webp",
scale: 2
)
Scale changes the rendered capture dimensions and therefore affects memory use and output size. Treat the value as an implementation option rather than assuming another browser automation library’s defaults apply to Ferrum.
Reusable Ruby patterns
Capture several pages safely
Keep one browser process alive when capturing multiple URLs, but create a fresh page when isolation is useful:
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
require "ferrum"
browser = Ferrum::Browser.new
begin
{
"home" => "https://example.com",
"about" => "https://example.com/about"
}.each do |name, url|
page = browser.create_page
begin
page.go_to(url)
page.screenshot(path: "#{name}.webp", format: "webp")
ensure
page.close
end
end
ensure
browser.quit
end
The outer ensure prevents a browser process from being left behind if one URL raises an exception. The inner cleanup releases each page after its capture.
Use a browser executable outside PATH
Ferrum needs a Chrome or Chromium executable. If it cannot find one in PATH, configure the browser path using the option documented by your Ferrum version, for example:
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →browser = Ferrum::Browser.new(
browser_path: "/path/to/chrome-or-chromium"
)
Use the exact option and executable path supported by the Ferrum release installed in your application. A system package, a managed CI browser, and a locally installed desktop browser can all have different paths.
Loading modern, dynamic pages
page.go_to navigates to a URL, but a page can continue changing after navigation because of JavaScript, image lazy-loading, animations, or API requests. Ferrum’s screenshot call captures the state that exists when it runs. The reviewed API material does not establish one universal wait that guarantees every site is finished, so choose a page-specific readiness strategy.
- Wait for a known element: identify a selector that appears only after the relevant component is rendered, then use the waiting facilities available in your Ferrum version.
- Wait for a fixed delay: use a short, explicit delay only when the page has a predictable animation or request time. Delays make captures slower and can still be too short under load.
- Make lazy content visible: for a full-page image, ensure the page has loaded content that normally appears only after scrolling. The required interaction depends on the site.
- Disable motion in page CSS: inject CSS or JavaScript when animation causes inconsistent frames, then capture after the page reaches its stable state.
Do not claim that a screenshot is complete merely because navigation returned. Define what “ready” means for your page and verify the resulting image in your own workflow.
Viewport, full page, element, and area compared
| Capture mode | Ferrum option | Best for | Important behavior |
|---|---|---|---|
| Viewport | None of full, selector, or area |
What a user sees at the current viewport | Uses the browser’s current visible surface |
| Full document | full: true |
Long pages and complete documentation | Overrides selector and area |
| Element | selector: ".class" |
A card, chart, or component | Selector takes precedence over area |
| Rectangle | area: { x, y, width, height } |
A fixed coordinate region | Ignored when full-page mode is enabled |
Troubleshoot common failures
“Ferrum cannot find Chrome or Chromium”
Cause: no supported browser is installed, or its executable is not in PATH.
Fix: install Chrome or Chromium in the runtime environment, check the executable manually, or pass the browser path option supported by your Ferrum version. In CI, make the browser installation part of the image or setup step.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
The output is PNG instead of WebP
Cause: the call omitted format: "webp", used a path with a .png extension, or another wrapper changed the options.
Fix: use both path: "name.webp" and format: "webp", and inspect the response file type in your pipeline.
The file is blank or missing page content
Cause: capture occurred before JavaScript, fonts, images, or a lazy section finished rendering; the page may also require authentication or a particular viewport.
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 minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallFix: wait for a page-specific readiness signal, confirm the URL and credentials, and test the same page interactively at the target viewport. A fixed delay alone is not proof that asynchronous work is complete.
A selector capture fails
Cause: the selector does not match, the element is hidden, or the element is replaced during rendering.
Fix: verify the selector in the page’s DOM, wait until it exists and is visible, and avoid capturing while a framework is replacing the node.
The full-page image is unexpectedly large
Cause: full-page scope, high scale, and high WebP quality all increase work and output dimensions.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Fix: capture only the needed element or area, lower scale or quality deliberately, and measure the result on representative pages before changing a production default.
Or skip the browser setup
ScreenshotNeo provides a website screenshot API and MCP server, so your Ruby application can request an image without managing Ferrum, Chrome, or Chromium. It removes cookie and consent banners, newsletter popups, and chat widgets before capture; bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, and each response identifies the page verdict and billing status in headers. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf tools to Claude, Cursor, and other MCP clients.
For API parameters, formats, full-page options, selectors, waiting controls, and authentication settings, see the ScreenshotNeo documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
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)
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 per month with no card. Paid plans start at $5 for 3,000 shots; every feature is included on every plan. Create a free ScreenshotNeo account to get started.
Cost, reliability, and operational choices
- Local Ferrum: no screenshot-service request is required, but you maintain the browser executable, fonts, sandbox permissions, page waits, and cleanup. Browser versions and rendering environments can affect output.
- WebP trade-off: quality values below 100 generally favor smaller lossy output, while higher values preserve more detail. There is no universal file-size or speed winner without measuring your pages.
- Repeatability: fix viewport, scale, quality, browser version, and readiness conditions when image diffs matter. Dynamic ads, timestamps, animations, and personalized content can still change pixels.
- Failure handling: wrap navigation and capture in
ensure, record the URL and options for failed jobs, and retry only transient failures rather than hiding selector or authentication errors.
Ruby WebP capture checklist
- Ferrum is in the Gemfile and installed with Bundler.
- Chrome or Chromium is installed and reachable, or a supported browser path is configured.
- The target URL is correct and accessible from the capture environment.
- The screenshot uses a
.webppath and explicitformat: "webp". - You selected viewport, full page, selector, or area intentionally.
- Dynamic content has a page-specific readiness condition.
- Quality and scale are set deliberately when output size or dimensions matter.
- The browser is closed in an
ensureblock.
Frequently Asked Questions
Can Ferrum save a screenshot directly to a WebP file?
Yes. Pass a WebP path and format: "webp" to page.screenshot.
Does full: true capture a selected element too?
No. Ferrum’s implementation gives full-page capture precedence over both selector and area.
What quality does Ferrum use if I omit quality:?
For non-PNG formats, Ferrum documents a default quality of 75 when no value is supplied.
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.

