Dmytro Krasun
With more than a decade of experience in software engineering, I share the best practices and solutions you can apply to your problems.
Using Clobbr to quickly load test the ScreenshotOne API
I needed a simple app to quickly grasp the performance of my API. I found a perfect one that suits well for local development and allows you to quickly check your API performance—Clobbr. I and Dan want to share a few thoughts about the load testing and Clobbr.
Posted September 23, 2023 by Dan Mindru and Dmytro Krasun ‐ 4 min read
Improving performance and stability by consolidating validation and access check logic in the API gateway
For the past few days, I have been working on improving the stability and performance of the ScreenshotOne API. I started from low-hanging fruits—moving validations and access key management from rendering services to ScreenshotOne's API gateway. The API will be more stable and performant as a result. If you are curious why, please continue reading.
Posted July 30, 2023 by Dmytro Krasun ‐ 2 min read
Alexander Schnebel about how he uses ScreenshotOne in Productglowup
I had a great chat with Alexander Schnebel, the founder of Productglowup, about how he uses ScreenshotOne in his marketing.
Posted July 24, 2023 by Dmytro Krasun ‐ 2 min read
Unveil the Power of Automation with ScreenshotOne and Zapier
I am thrilled to announce an exciting update for the ScreenshotOne users – the much-anticipated integration of ScreenshotOne with Zapier. This powerful combination is here to enhance your automation journey and expand your workflow capabilities to new heights.
Posted June 1, 2023 by Dmytro Krasun ‐ 3 min read
Async, Webhooks, and Extra Limits
May was a great month and full of new and exciting updates. Let's check them out quickly.
Posted May 25, 2023 by Dmytro Krasun ‐ 1 min read
ScreenshotOne is available as a ChatGPT plugin
From today, you can render screenshots of any website or even raw HTML in ChatGPT—ScreenshotOne is available as a plugin. But at the moment of writing not available yet, in the official store, but it can be available when you read it.
Posted May 14, 2023 by Dmytro Krasun ‐ 2 min read
Embracing the Future of Web Archiving with ScreenshotOne API
Enter the ScreenshotOne API – a revolutionary tool designed to change the face of web archiving.
Posted April 17, 2023 by Dmytro Krasun ‐ 3 min read
An improved screenshot history page
Daily, I work as hard as I can to ensure that ScreeenshotOne is the best screenshot API out there possible. But I rarely share updates but trust me, a ton of them might go unnoticed. Let's fix this situation.
Posted April 7, 2023 by Dmytro Krasun ‐ 1 min read
How to take website screenshots with C# (.NET)
Today, there are many options to make screenshots of any URL with C# (.NET). Let's examine them all and choose which suits you best.
Posted March 24, 2023 by Dmytro Krasun ‐ 3 min read
A friendly guide on how to render HTML or site screenshots in Google Sheets in less than 10 minutes
It is not the first time that one of the ScreenshotOne users asked how to render screenshots in Google Sheets. I wrote a simple but complete tutorial once and for all.
Posted March 5, 2023 by Dmytro Krasun ‐ 3 min read
Optimize for speed when rendering screenshots in Puppeteer and Chrome DevTools Protocol
Let's talk about the optimizeForSpeed parameter introduced in Chrome DevTools Protocol which will soon be supported by Puppeteer or even supported now at the time when you are reading the post.
Posted January 4, 2023 by Dmytro Krasun ‐ 1 min read
Take a screenshot "from the surface" in Puppeteer and Chrome DevTools Protocol
Let's talk about the fromSurface parameter introduced in Chrome DevTools Protocol which will soon be supported by Puppeteer or even supported now at the time when you are reading the post.
Posted January 3, 2023 by Dmytro Krasun ‐ 1 min read
How to convert HTML to PDF in JavaScript
Nowadays, you have various options to generate PDFs from HTML or any given URL: generating PDF in the browser, on the server-side (Node.js), or even using a modern and friendly API to generate PDF.
Posted January 2, 2023 by Dmytro Krasun ‐ 4 min read
Capture beyond viewport in Puppeteer and Chrome DevTools Protocol
Let's talk about the captureBeyondViewport parameter introduced in Chrome DevTools Protocol which will soon be supported by Puppeteer or even supported now at the time when you are reading the post.
Posted January 1, 2023 by Dmytro Krasun ‐ 3 min read
How to take website screenshots in Python
Today, there are many options to make screenshots of any URL with Python. Let's examine them all and choose which suits you best.
Posted December 22, 2022 by Dmytro Krasun ‐ 4 min read
How to take website screenshots in Ruby
Let's examine what Ruby proposes for us to render HTML or URL as a screenshot dynamically.
Posted December 15, 2022 by Dmytro Krasun ‐ 6 min read
How to record videos with Puppeteer
I gathered everything you need to know about how to record videos with Puppeteer in one place. Enjoy!
Posted December 5, 2022 by Dmytro Krasun ‐ 4 min read
Open Graph images
You can control the preview image rendered when your site is shared on social media, messengers, or apps that support the Open Graph protocol.
Posted November 27, 2022 (updated November 28, 2022) by Dmytro Krasun ‐ 11 min read
What is a screenshot or HTML rendering API?
A screenshot API or a screenshot as a service is usually a cloud or a remote server service that provides the ability to render any website, HTML, Markdown, or even PDF by making a request to the service, be it over HTTP, TCP, or any other protocol.
Posted November 22, 2022 (updated November 27, 2022) by Dmytro Krasun ‐ 2 min read
Heart-touching feedback from Gregory
Daily and nightly, I work on improving the quality and performance of ScreenshotOne (your friendly screenshot API) and ensuring I help customers solve their problems and prosper.
Posted November 21, 2022 by Dmytro Krasun ‐ 2 min read
Building a website directory with Next.js, Tailwind CSS, and Prisma
I am seeking a good stack I can switch to for my new projects. So, I decided to try and evaluate Next.js, Tailwind CSS, and Prisma stack with a small project.
Posted November 17, 2022 by Dmytro Krasun ‐ 15 min read
I migrated to Google Cloud
Google Cloud gives $300 in credits for 3 months for experimenting. And I decided to give it a try, but not because of the free credits.
Posted September 14, 2022 (updated September 14, 2022) by Dmytro Krasun ‐ 4 min read
How to hide chat widgets when taking a screenshot with Puppeteer
When you want to take chat widgets, there are annoying chat widgets that you would love to hide. It is easy to do.
Posted July 28, 2022 by Dmytro Krasun ‐ 1 min read
How to hide cookie banners when taking a screenshot with Puppeteer
When taking a screenshot, you want to ensure that you take a clean screenshot without cookie banners or cookie consent forms. And in this article, I will share with you how you can do it when using Puppeteer.
Posted July 28, 2022 by Dmytro Krasun ‐ 11 min read
Puppeteer: "Execution context was destroyed, most likely because of a navigation"
In this article, I share how to fix the "execution context was destroyed, most likely because of a navigation" error that might happen while using Puppeteer.
Posted July 25, 2022 by Dmytro Krasun ‐ 2 min read
A complete guide on how to take full page screenshots with Puppeteer, Playwright or Selenium
To take full-page screenshots with Puppeteer or Playwright, you only need to set the fullPage
parameter to `true` when taking a screenshot. But there are so many caveats that you may assume by default that the full-page screenshot feature does not work in Puppeteer.
Posted July 20, 2022 (updated October 19, 2022) by Dmytro Krasun ‐ 7 min read
How to create a site thumbnail with Puppeteer
We can consider the screenshot of URL or HTML as a thumbnail, but I write about the thumbnail of a screenshot. How do you take a screenshot within the defined viewport but with different image width and height? Resize!
Posted July 18, 2022 by Dmytro Krasun ‐ 3 min read
Taking screenshots with Puppeteer in GIF, JP2, TIFF, AVIF, HEIF, or SVG format
Puppeteer, by default, supports only four formats for taking screenshots or rendering HTML: PNG, JPEG, WebP, and PDF.
If you want to take a screenshot of the site or render HTML in a different format, like GIF, JP2, TIFF, AVIF, HEIF, or SVG, there are many workarounds on how to do it.
Posted July 17, 2022 by Dmytro Krasun ‐ 6 min read
Puppeteer, wait until the page is ready!
Join me in exploring how to find the ideal wait time or event of when to take the page screenshot with Puppeteer.
Posted July 13, 2022 (updated July 14, 2022) by Dmytro Krasun ‐ 7 min read
Uploading website screenshots to any S3-compatible storage
In this note, I share how I take website screenshots or render HTML and upload the resulted images or PDF to any S3-compatible storage like Amazon S3, Cloudflare R2, or Backblaze B2.
Posted July 12, 2022 by Dmytro Krasun ‐ 3 min read
How to render HTML with Puppeteer
Suppose you want a reliable way to render HTML with the latest versions of browsers.In that case, I bet you can't find a better solution than rendering HTML with Puppeteer — you always have an up-to-date version of the browser, and using Puppeteer is super easy.
Posted June 26, 2022 (updated June 27, 2022) by Dmytro Krasun ‐ 4 min read
How to add custom scripts to a page in Puppeteer
Let's discover how it works quickly.
Posted June 24, 2022 by Dmytro Krasun ‐ 2 min read
How to add custom styles to a page in Puppeteer
Let's discover how it works quickly.
Posted June 24, 2022 (updated June 24, 2022) by Dmytro Krasun ‐ 2 min read
How to take website screenshots with PHP
Today, there are many options to make screenshots of any URL with PHP. Let's examine them all and choose which suits you best.
Posted June 14, 2022 by Dmytro Krasun ‐ 3 min read
How to take website screenshots with JavaScript or TypeScript (Node.js)
Today, there are many options to make screenshots of any URL with JavaScript or TypeScript (Node.js). Let's examine them all and choose which suits you best.
Posted June 6, 2022 (updated June 14, 2022) by Dmytro Krasun ‐ 4 min read
How to take website screenshots with Java
Today, there are many options to make screenshots of any URL with Java. Let's examine them all and choose which suits you best.
Posted June 2, 2022 (updated June 10, 2022) by Dmytro Krasun ‐ 3 min read
How to take website screenshots with Go
Today, there are many options to make screenshots of any URL with Go. Let's examine them all and choose which suits you best.
Posted June 1, 2022 (updated June 10, 2022) by Dmytro Krasun ‐ 5 min read
How to set a time zone in Puppeteer for page
Puppeteer allows blocking any outgoing requests while loading the page. Whether you want to block ads, tracking scripts, or different types of resources, it is relatively easy to do with Puppeteer.
Posted March 11, 2022 (updated June 23, 2022) by Dmytro Krasun ‐ 1 min read
How to block requests with Puppeteer
Puppeteer allows blocking any outgoing requests while loading the page. Whether you want to block ads, tracking scripts, or different types of resources, it is relatively easy to do with Puppeteer.
Posted March 9, 2022 (updated July 14, 2022) by Dmytro Krasun ‐ 4 min read
How to take a screenshot of the element with Puppeteer
Puppeteer allows you to automate everything you can do in the browser manually and even more. You can take screenshots of the entire page and the specific elements.
Posted February 1, 2022 (updated June 18, 2022) by Dmytro Krasun ‐ 1 min read
How to use proxy per page with Puppeteer
It is easy to use proxy globally for the puppeteer instance, but there is a trick to use proxy on a per-page basis.
Posted January 20, 2022 (updated July 10, 2022) by Dmytro Krasun ‐ 3 min read
How to take a screenshot with Puppeteer
Making screenshots of the websites with Puppeteer can be tricky. A lot of pitfalls wait for us. Let's examine Puppeteer on a set of "screenshotting" problems and tackle arising pitfalls.
Posted January 5, 2022 (updated July 28, 2022) by Dmytro Krasun ‐ 13 min read