Capture any website as PNG, JPEG, WebP, or PDF from Go. Zero external dependencies, full context support, and no Chrome binary anywhere near your Docker image.
200 free screenshots/month. No credit card required.
go get the official SDK, paste your API key, and capture. Standard library only.
go get github.com/User0856/snaprender-go
package main
import (
"context"
"log"
"os"
snaprender "github.com/User0856/snaprender-go"
)
func main() {
client := snaprender.NewClient("sk_live_your_key_here")
img, err := client.Capture(context.Background(), "https://example.com", nil)
if err != nil {
log.Fatal(err)
}
os.WriteFile("screenshot.png", img, 0644)
}
img, err := client.Capture(ctx, "https://example.com", &snaprender.CaptureOptions{
Format: "jpeg",
FullPage: snaprender.Bool(true),
DarkMode: snaprender.Bool(true),
Device: "iphone_15_pro",
Cache: snaprender.Bool(true),
})
Ads and cookie banners are blocked by default. The same client also handles signed URLs, content extraction, batch jobs, and webhooks.
chromedp is the standard answer for browser automation in Go, but it controls a Chrome that has to exist on the machine. That single requirement undoes most of what makes Go deployments pleasant: your single static binary now ships inside an image with a full browser, system fonts, and shared libraries. A 10MB scratch image becomes an 800MB Debian image, and you maintain Chrome versions on every host that takes screenshots.
The SnapRender Go SDK keeps your binary self-contained. It is a stdlib-only HTTPS client: client.Capture(ctx, url, opts) sends one request, real Chrome renders the page on our servers with ads and cookie banners removed, and you get the image bytes back. Context cancellation and timeouts work exactly like the rest of your Go code, and the client is safe to share across goroutines, so fan-out captures are a simple errgroup away.
| SnapRender SDK | chromedp / rod | |
|---|---|---|
| Chrome on the host | Not needed | Required, plus fonts and libs |
| Docker image size | Scratch / distroless OK | Hundreds of MB for the browser |
| go.sum footprint | Zero dependencies | CDP protocol packages |
| Cookie banners and ads | Blocked by default | Custom code per site |
| Browser crash recovery | Handled for you | Yours to build |
Want to check the rendering quality first? Try the free website screenshot tool: same engine, no account needed.
Install the official SDK with go get github.com/User0856/snaprender-go, create a client with your API key, and call client.Capture(ctx, url, nil). The page renders in real Chrome on SnapRender's servers and you receive the image bytes. Your Go binary stays a single static executable: no Chrome on the host, no DevTools protocol session management.
No. The SDK uses only the Go standard library (net/http). Your go.sum does not grow, and your Docker image does not need a Chrome or Chromium layer, so scratch and distroless images keep working.
Yes. Every call takes a context.Context as its first argument, so you can apply timeouts, deadlines, and cancellation exactly the way you do with any other Go HTTP work. It is safe to call from multiple goroutines.
Yes. Pass CaptureOptions with FullPage: snaprender.Bool(true) for the entire scrollable page, Format: "pdf" to save the page as a PDF, DarkMode for dark theme captures, and Device: "iphone_15_pro" for mobile emulation. Ads and cookie banners are blocked by default.
Yes. The free plan includes 200 screenshots per month with every feature: all formats, full-page capture, device emulation, dark mode, and caching. No credit card is required to sign up.
The same API has official quickstarts for other languages.
go get, paste your key, capture. 200 free screenshots per month, no credit card.