Web browsers are indeed forgiving when it comes to incomplete HTML. Some time ago, I did a small experiment to see what minimal HTML is required to display a simple 'Hello' page while adhering to the specification, passing HTML Tidy validation and also satisfying the Nu HTML Checker. As far as I can tell, it is this:
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>Hello</title>
<body>
<p>Hello!
Remove any tag and the validation fails. Here is how the Tidy check looks: $ tidy -qe minimal.html
$
And here's a Nu check link: https://validator.w3.org/nu/?doc=https%3A%2F%2Fsusam.net%2Fc...
The body tag is unnecessary, tidy might complain but that is not the spec. The meta tag is generally unnecessary (the content encoding should be set by the server in the headers since it applies to not just HTML). The html tag is unnecessary if you do not want to declare the language of the document (which is generally a warning).
So I guess smallest without errors should be
And smallest without errors or warnings should be And then any content that is not links, scripts, meta tags, etc. will automatically be within a body after like