Downloading HTML from a Website

Published by Nyau Wai Hoe - Updated on

The Internet is a rich repository of data and resources. Every webpage we interact with is primarily built using HTML (HyperText Markup Language), a standard markup language that structures the content displayed on the web. In various scenarios, such as web scraping, testing, or debugging, you might find the need to download a webpage’s HTML. This comprehensive guide will help you understand how to do this effectively and ethically.

Also see: Download All Files From a Website Directory Using Wget in Windows 11 or 10

Downloading HTML from a Website

Before proceeding, it’s important to emphasize that before downloading HTML or scraping a website, you should always respect the site’s robots.txt file and its terms of service. Ensure that your actions are in compliance with the website’s rules and the laws of your jurisdiction.

What is HTML?

HTML, an abbreviation for HyperText Markup Language, is the backbone of web content. It is the standard markup language used for creating webpages that can be displayed in a web browser. HTML works in conjunction with technologies like Cascading Style Sheets (CSS) and scripting languages such as JavaScript to enhance the structure, style, and interactive functionalities of a webpage.

An HTML document is essentially a text file composed of HTML elements, denoted by tags. These tags label parts of the content, defining them as “heading”, “paragraph”, “table”, and so forth.

Related resource: How to Convert HTML to PDF in Windows 11/10

How to download HTML file from a website

There are several methods to download HTML from a website, and the right one for you may depend on your use case. We’ll explore a few popular ones: using a web browser, using the command line, and using a programming language like Python.

Using a Web Browser

For the purpose of this article, we will use Google Chrome as the browser of choice. However, the process is quite similar in other modern browsers.

Downloading HTML source code from a website

If you want to download only the HTML file from a website without any associated resource files, follow these steps:

  1. Navigate to the Webpage: Open Google Chrome and navigate to the webpage whose HTML you wish to download.
  2. View Page Source: Right-click anywhere on the webpage you want to download the html and select “View Page Source”. This action will open a new tab that displays the webpage’s HTML content.View page source for a website
  3. Save HTML: Within this new tab, right-click again and choose “Save As”. Select the desired location on your computer where you wish to save the HTML file, and click “Save”. You now have only the webpage’s HTML (without any of the resource files) downloaded on your computer.Download HTML source code from website

Useful tip: How to Run HTML Code in Notepad Windows 11

Downloading HTML with pictures, CSS and JS from a website

If you want to download the full webpage, including its resource files such as pictures, CSS, and JS files, follow these steps:

  1. Navigate to the Webpage: Open Google Chrome and navigate to the webpage whose HTML you wish to download. Within the webpage, right-click anywhere on the page and choose “Save As”.Download HTML CSS JS file from website
  2. Save HTML: A dialog box will open, prompting you to select the location on your computer where you wish to save the HTML file. Click “Save”. You now have the webpage’s HTML downloaded on your system.Save a webpage as HTML and CSS JS files with Chrome

When you save a webpage as HTML this way, using Chrome or any other web browser, the browser actually downloads two things:

  1. HTML File: This is the .html file that contains the HTML of the webpage. This file includes the structure of the webpage along with the content. The HTML file has references to any external resources the webpage uses, such as images, CSS files, and JavaScript files.
  2. Resources Folder: Along with the HTML file, the browser also downloads a folder with the same name as the HTML file, but with ‘_files’ appended to the name. This folder contains all the resources that the webpage uses which are downloaded and stored locally. These resources can include images, CSS files, JavaScript files, and more. These files are necessary for the webpage to display correctly offline.

Chrome save the HTML as a single file

The browser then adjusts the HTML file’s links to these resources so that they point to the local copies in the resources folder, allowing the webpage to load correctly even without an Internet connection.

However, it’s important to note that not all parts of the webpage might work offline. For example, if the webpage uses a server-side script (like PHP), that script won’t run when viewing the page offline. Similarly, if the webpage loads resources dynamically using JavaScript, those resources might not be downloaded.

Recommended guide: How to Check When a Web Page Was Last Updated

Why doesn’t Chrome save the HTML as a single file?

The primary reason is to maintain the correct structure and functionality of the webpage. Webpages are often complex, comprising not just HTML but also linked resources like CSS for styling and JavaScript for interactivity. These resources are often stored in separate files and linked from the HTML file.

If Chrome were to consolidate everything into a single HTML file, it would need to inline all these resources, i.e., insert the contents of these resource files directly into the HTML file. While technically possible, this method is generally uncommon due to disadvantages associated with readability, editability, functionality, and performance.

Therefore, to maintain the structure, functionality, and performance of the webpage, Chrome chooses to download the HTML and linked resources as separate files rather than merging everything into a single HTML file.

See also: Create Website or Application Shortcut on Desktop using Chrome

Using the Command Line

If you are working on a Unix-based system like Linux or MacOS, you can use the wget or curl command to download HTML from a website.

  1. Using wget:

    This command downloads the HTML of the webpage and saves it in a file in your current directory.

  2. Using curl:
    curl > example.html

    This command fetches the HTML of the webpage and redirects it into a file named “example.html”.

Download HTML from website using command line

Using Python

Python is a versatile programming language with several libraries for web scraping, such as requests and beautifulsoup4. Below is a simple script to download HTML:

import requests

url = ""
response = requests.get(url)

with open('example.html', 'w') as file:

Download HTML from website using Python

This script sends a GET request to the webpage, receives the HTML in the response, and writes it to a file named ‘example.html’.

If you’re new to Python, you might face errors like “ModuleNotFoundError”, which means the module you’re trying to import is not found. For instance, if Python can’t find the requests module, you need to install it. Python uses pip, a package manager, to install modules. Open your command line and type:

pip install requests

This installs the requests module. If you get a similar error for beautifulsoup4 or another module, install it the same way.

Advanced Usage: Web Scraping

Once you have the HTML, you might want to extract specific data from it, a practice known as web scraping. Python’s beautifulsoup4 is a library that makes this task easier. It parses the HTML, making the tree-like structure of the HTML tags navigable.

Here’s a brief example:

from bs4 import BeautifulSoup
import requests

url = ""
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# Let's say we want to extract all the headers in the page
headers = soup.find_all(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])

for header in headers:

In this script, BeautifulSoup is used to parse the HTML. The find_all function is then used to find all header tags in the HTML. The script then prints the text of each header tag.

Web Scraping Python using BeautifulSoup

Dealing with Dynamic Content

Many modern websites load their content dynamically using JavaScript. This means that the initial HTML of the page doesn’t contain all the data visible on the webpage. In such cases, tools like wget, curl, or requests won’t be able to download the complete HTML as seen in the browser.

For such cases, you can use tools like Selenium, Puppeteer, or Playwright. These tools open a browser instance, allow the JavaScript to execute, and then provide access to the final HTML. Note, however, that these tools have a higher learning curve and may require more resources to run.

Here is a basic example of how to use Selenium with Python to download HTML:

from selenium import webdriver

# Make sure the chromedriver is in your PATH
driver = webdriver.Chrome()


html = driver.page_source

with open('example.html', 'w') as file:


Use Selenium to download HTML from website in Python

This script opens a Chrome browser, navigates to the webpage, then saves the source HTML. It’s important to note that this method can be slower and more resource-intensive than the previous methods, but it allows you to interact with the JavaScript on the page and download the resulting HTML.


Whether you’re a programmer, tester, hobbyist, or someone interested in the structure of webpages, knowing how to download HTML from a website can be a valuable skill. There are various methods to achieve this, and the best one depends on your specific needs and the tools you have at your disposal. Always remember to respect the website’s terms of service and robots.txt file, and only download HTML when it’s appropriate and legal to do so.

Nyau Wai Hoe
Nyau Wai Hoe is the Founder and Chief Editor of With a degree in software engineering and over 12 years of experience in the tech support industry, Nyau has established himself as an expert in the field, with a primary focus on the Microsoft Windows operating system. As a tech enthusiast, he loves exploring new technologies and leveraging them to solve real-life problems.

Share via
Copy link