Recommended Free Tools
To generate PDFs from a list of URLs with PDFCrowd, send a separate conversion request for each URL, save each response as its own PDF, and record the result against the source URL. PDFCrowd’s documented HTTP API accepts a single url form field per request—not a list in one request—and returns PDF bytes. The versioned endpoint is https://api.pdfcrowd.com/convert/24.04/; authenticate with your PDFCrowd username and API key using HTTP Basic authentication. PDFCrowd’s HTTP API guide documents the request format.
How the list-to-PDF workflow works
A batch is orchestration in your script, not a bulk-list API call. Read URLs from a text or CSV file, make one conversion request per URL, write successful response bytes to a unique .pdf file, and log failures without losing track of which URL failed.
As an Amazon Associate I earn from qualifying purchases.
- Prepare one URL per line, or extract a URL column from your CSV.
- Choose a stable, filesystem-safe output name for every input. Use an index or unique identifier as well as a sanitized hostname or page title; different URLs can otherwise produce colliding filenames.
- Submit one request per URL using the HTTP API, an official SDK, or PDFCrowd’s command-line client.
- Save each successful response immediately and write a manifest containing the original URL, output filename, and success or error status.
- Keep concurrency within the limits of your license and retry only temporary failures with increasing delays.
The API fields are form fields, not a JSON request body. A conversion also requires the source URL and its page resources to be reachable from PDFCrowd’s servers. Credentials for PDFCrowd are separate from any login, cookie, or header the source website requires.
Free tools Windows power users keep installed
One-click scans. No signup required.
Choose an implementation
| Method | Best fit | Batch control |
|---|---|---|
| HTTP API with cURL or a script | You need direct control over requests, filenames, logs, concurrency, and retries. | Your code handles the loop and response checks. |
| Python SDK | Your batch tooling is already in Python and you want the vendor’s client library. | Your Python loop maps each URL to a file and catches conversion errors. |
| Command-line client | You want URL conversions in a script, scheduled job, deployment workflow, or server automation. | Use a shell or job runner to iterate over URLs and capture each outcome. |
These are different interfaces to the same PDFCrowd service, not separate rendering engines. Choose based on the language and job controls you already use. Official references: HTTP API, API for developers, Python, and command-line tool.
#1 Best Overall
- Convert your PDF files into Word, Excel & Co. the easy way
- Convert scanned documents thanks to our new 2022 OCR technology
- Adjustable conversion settings
- No subscription! Lifetime license!
- Compatible with Windows 11, 10, 8.1, 7 - Internet connection required
Use the HTTP API with cURL
This example reads newline-separated URLs, issues one POST per URL, and writes a manifest row for each item. Set the PDFCrowd credentials in environment variables rather than placing them in a script committed to source control.
export PDFCROWD_USERNAME='your-username'
export PDFCROWD_API_KEY='your-api-key'
mkdir -p pdfs
: > manifest.csv
index=0
while IFS= read -r url || [ -n "$url" ]; do
[ -z "$url" ] && continue
index=$((index + 1))
file=$(printf 'pdfs/%04d.pdf' "$index")
if curl --silent --show-error --fail
--user "$PDFCROWD_USERNAME:$PDFCROWD_API_KEY"
--request POST
--data-urlencode "url=$url"
--output "$file"
'https://api.pdfcrowd.com/convert/24.04/'; then
printf 'success,%s,%sn' "$url" "$file" >> manifest.csv
else
rm -f "$file"
printf 'failed,%s,%sn' "$url" "$file" >> manifest.csv
fi
done < urls.txt
The indexed filename prevents two URLs from overwriting each other. The manifest preserves the mapping to the source, including when the URL itself is unsuitable as a filename. For production use, add a CSV-aware URL reader if URLs may contain commas, and record the HTTP status and error response for failures rather than relying only on the shell exit code. The request’s url parameter is form-encoded; do not send it as JSON.
Use the Python SDK
Install PDFCrowd’s documented package with pip install pdfcrowd. The following script converts one URL at a time, sets a content viewport, and records per-item success or failure. It uses sequential requests, which is a conservative starting point when the license’s concurrency limit is unknown.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #2
- Convert over 50 document file formats.
- Preview your files from Doxillion before converting them.
- Use batch conversion to convert thousands of files at once.
- Enjoy an easy-to-use, intuitive interface with a Drag and Drop file option.
- Burn your converted or original files directly to disc.
import csv
from pathlib import Path
import pdfcrowd
USERNAME = "your-username"
API_KEY = "your-api-key"
INPUT = Path("urls.txt")
OUTPUT_DIR = Path("pdfs")
MANIFEST = Path("manifest.csv")
OUTPUT_DIR.mkdir(exist_ok=True)
client = pdfcrowd.HtmlToPdfClient(USERNAME, API_KEY)
client.setContentViewportWidth("1280px")
with INPUT.open(encoding="utf-8") as source, MANIFEST.open(
"w", newline="", encoding="utf-8"
) as manifest_file:
writer = csv.writer(manifest_file)
writer.writerow(["status", "url", "file", "error"])
for index, raw_url in enumerate(source, start=1):
url = raw_url.strip()
if not url:
continue
output_file = OUTPUT_DIR / f"{index:04d}.pdf"
try:
client.convertUrlToFile(url, str(output_file))
writer.writerow(["success", url, str(output_file), ""])
except pdfcrowd.Error as error:
output_file.unlink(missing_ok=True)
writer.writerow(["failed", url, str(output_file), str(error)])
manifest_file.flush()
print(f"Conversion failed for {url}: {error}")
else:
manifest_file.flush()
print(f"Saved {url} to {output_file}")
Keep credentials outside code in a production environment, such as environment variables or a secret store. If you need different layout behavior, configure the client’s conversion options for the page before converting; PDFCrowd documents options including viewport width, wait controls, print media, and custom CSS in its Python API reference.
Use PDFCrowd’s command-line client
PDFCrowd documents an HTML-to-PDF command-line tool for scripts, scheduled tasks, deployment workflows, and server automation. It accepts URL inputs. For a URL list, iterate through the file in your shell or job runner, invoke the client once per URL, and direct each output to its own filename. Consult the official CLI reference for the current executable syntax and authentication setup; do not treat a URL list as one conversion input.
Control errors, retries, and throughput
Respect account limits
PDFCrowd states that request rate and concurrent conversions depend on the license. Its documentation identifies HTTP 429 for request-rate limits and 430 for requests already in progress. Start with sequential processing if you do not know the account’s limits, then increase concurrency only within the terms for your license. The API documentation also states a maximum upload size of 300 MB and a server-side processing limit of 60 seconds; these are vendor-stated limits, not independent performance measurements. See the API documentation.
Rank #3
- EDIT text, images & designs in PDF documents. ORGANIZE PDFs. Convert PDFs to Word, Excel & ePub.
- READ and Comment PDFs – Intuitive reading modes & document commenting and mark up.
- CREATE, COMBINE, SCAN and COMPRESS PDFs
- FILL forms & Digitally Sign PDFs. PROTECT and Encrypt PDFs
- 1 Year License for 1 Windows & 2 Mobile (Android and/or iOS) devices.
Retry selectively
Retry temporary network or service failures with a bounded number of attempts and increasing delays. Do not retry permanent errors such as invalid credentials or malformed input without fixing their cause. For rate or concurrency responses, reduce request pressure before retrying. Preserve the URL and error in your manifest so a later run can target failed items instead of reconverting the entire list.
Keep the batch recoverable
- Write each PDF as soon as it succeeds; avoid keeping all responses in memory.
- Flush or otherwise persist the manifest as the batch runs so an interrupted process does not erase completed work.
- Use deterministic output names or a stable URL-to-name mapping, and avoid overwriting a valid PDF with a failed or partial response.
- Track HTTP status and response details for the HTTP API; for SDK failures, retain the exception text.
Fix inaccessible pages and layout problems
The source URL cannot be fetched
PDFCrowd’s servers must be able to reach the page and its resources. A URL on your computer’s localhost is not reachable from the conversion service. Make the page accessible to the service or send HTML content through a supported content-conversion path instead. For protected pages, configure source-site cookies, headers, or credentials separately from your PDFCrowd API username and key. The HTTP API guide explains the request and conversion options: PDFCrowd HTML to PDF HTTP API.
Dynamic content is missing
If a page populates content after its initial load, use the documented wait_for_element or javascript_delay controls as appropriate. A longer local client timeout does not extend PDFCrowd’s documented 60-second server processing limit. The API guide recommends inspecting the conversion response and debug log; slow resource downloads or long-running JavaScript can prevent a conversion from finishing in time.
Rank #4
- Perfect Adobe Acrobat Pro alternative – lifetime license for Windows 10 and 11.
- EDIT text, images, pages, hyperlinks, designs in PDF documents. ORGANIZE PDFs.
- READ and Comment on PDFs – Intuitive reading modes & document commenting and mark up tools!
- CREATE, COMBINE, SCAN and COMPRESS PDFs.
- FILL forms & Digitally Sign PDFs. Work with Digital certificates
The PDF has the wrong width or print styling
For pages designed for print, consider use_print_media or custom CSS. If the page’s content width is wrong, adjust content_viewport_width. Check the source page’s own responsive behavior as well: changing the conversion viewport can cause the site to select a different layout.
Check the error before retrying
When a conversion fails, inspect the HTTP status and response body, or the SDK exception and optional debug log. A 429 points to request rate; a 430 points to requests already in progress. Authentication errors call for checking PDFCrowd credentials, while source access errors call for checking reachability and source-site authentication. Retrying unchanged input will not correct those underlying problems.
Cost and plan checks
PDFCrowd’s pricing page describes a trial with 100 test API credits valid for one month and defines one credit as 0.5 MB of generated output data. These are vendor-stated pricing terms on the page checked in 2026; verify the live Plans page and account-specific limits before estimating a production batch. A list’s cost therefore depends on generated output size, not only on the number of input URLs.
Best Value
- Convert over 50 document file formats.
- Preview your files from Doxillion before converting them.
- Use batch conversion to convert thousands of files at once.
- Enjoy an easy-to-use, intuitive interface with a Drag and Drop file option.
- Burn your converted or original files directly to disc.
Or skip the browser setup
If the real goal is clean visual captures rather than PDFCrowd’s URL-to-PDF workflow, ScreenshotNeo is a website screenshot API and MCP server: it returns PNG, JPEG, WebP, or PDF from one GET request. For a PDF response, use the API’s documented PDF output option and consult the ScreenshotNeo API documentation for request parameters.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo accepts cookie and consent banners like a visitor and removes 60+ known consent platforms, newsletter popups, and chat widgets before capture; each of those steps can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, and response headers report the page verdict and billing status. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. The free plan includes 1,000 shots a month with no card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free plan: 1,000 screenshots a month, no card required.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Frequently Asked Questions
Can one PDFCrowd API request convert a whole list of URLs?
No. The documented HTTP request takes one URL in its url form field, so a batch client must submit one request per URL.
Can PDFCrowd convert a page on my computer’s localhost?
No. The conversion service must be able to reach the source URL. Use an accessible URL or send the HTML through a supported content-conversion option.
Does a longer client timeout overcome PDFCrowd’s processing limit?
No. A client timeout controls how long your program waits; it does not change the server-side processing limit documented by PDFCrowd.
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.

