Recommended Free Tools
If html2canvas turns a rounded element into a rectangle, the cause is usually a mismatch in its DOM/CSS reconstruction rather than missing border-radius support. Confirm your installed version and browser, reproduce the problem with one simple element, then add styles back gradually. Test the documented foreignObjectRendering mode, inspect the cloned document with onclone, and isolate shadows or other effects before filing a minimal issue.
html2canvas does not copy the browser’s final pixels. It reads the DOM and CSS and builds a canvas representation, so a page that looks correct in the browser can render differently. The project lists border-radius as supported, but explains that every CSS property is implemented individually and coverage is not complete. See the html2canvas documentation and FAQ.
Why rounded corners become rectangles
There is no universal one-line fix. A radius can fail because of an html2canvas version difference, an interaction with shadows, transforms, borders, clipping or nested elements, or a browser-specific limitation in the renderer. The maintainers’ own guidance is to test the latest release with a reproducible case rather than assume that a CSS feature behaves exactly like native browser painting.
The FAQ states: “Every CSS property must be manually implemented to render correctly, so html2canvas will never have full CSS support.” That limitation explains why a valid CSS declaration can still produce a different canvas image.
#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.
1. Record the exact capture context
Before changing code, write down the values that can change the result:
- The html2canvas version resolved by your package lockfile or script tag.
- Browser name and full version, operating system, and whether the page runs locally or on a deployed origin.
- The element’s width and height, computed
border-radius, border width, overflow, transform and stacking context. - Whether a
box-shadow, image, pseudo-element, filter or nested rounded child is present. - The html2canvas options used and any console errors or warnings.
Do not infer the version from a previous upgrade attempt. Check the installed dependency or the actual non-minified build loaded by the page. The project changelog includes historical radius-related fixes, including handling values over 50% and a top-right radius correction, so version can matter without guaranteeing that an upgrade resolves your case. Review the changelog.
2. Reproduce the radius with one element
Start with a plain element, a solid fill and no effects. Render only that element. This tells you whether the failure is the radius itself or a style interaction.
<div id="card">Rounded test</div>
<script src="https://html2canvas.github.io/html2canvas/dist/html2canvas.min.js"></script>
<script>
const element = document.querySelector('#card');
html2canvas(element).then(canvas => document.body.appendChild(canvas));
</script>
#card {
width: 240px;
height: 120px;
background: #4b78d1;
border-radius: 16px;
}
If this test is rounded, restore your production styles one at a time: first the border, then overflow and children, then images, transforms and shadow. Capture after each change. The first addition that makes corners square identifies the interaction you need to work around.
Check computed values, not just stylesheet text
Open DevTools, select the element and inspect the Computed panel. Confirm that each corner has the expected value (for example, 16px or the intended percentage) and that a more specific rule has not overridden it. Also check that the element being passed to html2canvas is the rounded node, not an outer wrapper with square geometry.
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.
3. Compare the alternate renderer
The configuration reference documents foreignObjectRendering. It asks the browser to render HTML inside an SVG foreignObject when the browser supports that path; the default is false. It is a diagnostic comparison, not a guaranteed fix for this symptom.
const element = document.querySelector('#card');
const canvas = await html2canvas(element, {
foreignObjectRendering: true
});
document.body.appendChild(canvas);
Run the same minimal case with the option off and on in the target browser. Compare both the corner shape and the console output. If the alternate path works, you have a practical browser-dependent workaround, but test the full page because fonts, external images and other resources can behave differently. The supported option and defaults are listed in the configuration reference and features page.
4. Inspect the cloned document with onclone
html2canvas clones the document before rendering. The onclone callback lets you inspect or modify that clone without changing the live page. Use it to verify that the cloned element still has the expected computed radius.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsconst canvas = await html2canvas(document.querySelector('#card'), {
onclone(clonedDocument) {
const clonedElement = clonedDocument.querySelector('#card');
if (clonedElement) {
console.log(getComputedStyle(clonedElement).borderRadius);
}
}
});
document.body.appendChild(canvas);
If the clone reports a different value, look for styles that depend on a class, media query or ancestor that is absent in the clone. You can apply a temporary diagnostic rule in the callback, capture it, and remove the rule from your production code after identifying the cause. The callback is an inspection and controlled-test tool, not a radius-specific patch.
5. Separate shadows from corner geometry
A reported html2canvas issue describes a coarse black border when box-shadow is combined with rounded corners. In that report, removing the shadow removed the artifact while the radius remained. This is narrow evidence: a dark outline is not the same failure as genuinely square corners.
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.
To test the interaction, capture the element once with the shadow and once without it:
const element = document.querySelector('#card');
const withoutShadow = element.cloneNode(true);
withoutShadow.style.boxShadow = 'none';
withoutShadow.style.position = 'fixed';
withoutShadow.style.left = '-10000px';
document.body.appendChild(withoutShadow);
const canvas = await html2canvas(withoutShadow);
withoutShadow.remove();
document.body.appendChild(canvas);
If only the shadowed version fails, consider a simpler shadow, a separate wrapper for the shadow, or a post-processing step. Do not claim that this issue explains every rectangular output. Read the original report at Issue #2953.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
6. Reintroduce difficult CSS deliberately
Once the plain radius works, test these features separately:
- Percentage radii: verify the element has the intended dimensions; percentages resolve against its box and can expose version-specific behavior.
- Unequal corners: test explicit values such as
16px 24px 8px 32pxinstead of the shorthand first. - Borders: compare no border, a uniform border and individual border widths.
- Overflow and children: add
overflow: hiddenand nested content after the outer shape is confirmed. - Transforms: capture an untransformed element, then add scale, rotation or 3D transforms.
- Images and pseudo-elements: verify that resources have loaded and that the visible corner is not painted by a child covering the parent.
This matrix prevents a workaround for one interaction from hiding the actual failing property.
7. Check browser support and make a useful issue
The project lists modern evergreen Chrome/Chromium, Firefox and Safari as supported browsers, but the available guidance does not identify one browser as the general cause of rectangular corners. Run the same minimal page in the browser versions you support and record differences.
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
If the reduced case still fails, use the latest release and the non-minified build, preserve console output, and attach the smallest HTML/CSS, the expected browser view and the actual canvas. Include the html2canvas release, browser and version, operating system, element dimensions, radius values and any shadow or transform. The FAQ recommends creating a test case when a CSS property is missing or incomplete. Start with the getting-started guide and follow the project’s issue-template expectations.
Common symptoms and targeted fixes
| Symptom | Likely scope | What to try |
|---|---|---|
| Simple solid card is square | Version, browser path or incomplete property implementation | Verify version, reduce to the minimal case, compare foreignObjectRendering, then report it. |
| Only a dark outline appears | Possible shadow interaction | Remove box-shadow for one capture and compare; do not generalize the result. |
| Only the production component fails | Interaction with border, transform, child or pseudo-element | Add styles back one at a time and inspect the cloned computed style. |
| Different browsers disagree | Renderer or browser implementation difference | Record browser versions, test the alternate mode where supported, and choose a tested path for your users. |
Or skip the browser setup
If your goal is a reliable website image rather than debugging a client-side canvas, ScreenshotNeo captures the rendered page through an API. It accepts consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups and chat widgets before capture. Bot checks, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info and capture_pdf tools for Claude, Cursor and other MCP clients.
One GET request returns PNG, JPEG, WebP or PDF. See the ScreenshotNeo API documentation for all options.
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)
r.raise_for_status()
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}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const buffer = Buffer.from(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', buffer));
ScreenshotNeo includes full-page lazy-image loading, CSS-selector element capture, device presets and custom viewports, retina scale, custom CSS and JavaScript, waits, request blocking, cookies and headers, timezone and geolocation, transparent backgrounds, resizing, selectable cache TTLs, signed links, asynchronous jobs, bulk capture for up to 100 URLs per call, usage data and an OpenAPI specification. Parameter names used by other screenshot APIs also work for easier migration.
The Free plan includes 1,000 shots each month with no card. Paid plans start at $5 for 3,000 shots; every feature is available on every plan, and yearly billing gives two months free. Create a free ScreenshotNeo account and start with the included monthly shots.
FAQ
Does html2canvas support border-radius at all?
Yes. The feature list includes it, but support is property-by-property and does not promise identical output for every combination of values and effects.
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.
Should I always enable foreignObjectRendering?
No. It is an optional path that depends on browser support. Compare it with the default renderer on your actual target browsers and page.
Is a square corner proof that my CSS is invalid?
No. If the live browser view is rounded and computed styles show the expected radius, the discrepancy can be in html2canvas’s reconstruction or in an interaction with another style.
Frequently Asked Questions
Can changing the canvas scale fix rounded corners?
Scale affects output resolution, not whether html2canvas correctly reconstructs the radius. Diagnose the renderer and CSS interaction first.
Free tools Windows power users keep installed
One-click scans. No signup required.
Should I replace html2canvas when one component fails?
Not automatically. A minimal reproduction, alternate rendering mode and isolated-style test can reveal a narrow interaction that may be easier to work around or report.
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.

