Free · Fast · Privacy-first

HTML Syntax Checker Online

A single unclosed tag, a missing quote, or a stray angle bracket can quietly distort an entire page layout because browsers will accept the broken markup and reshape it however their error-recovery rules dictate.

Free • Fast • Privacy-first

HTML Validator & Linter

Our free HTML validator helps you check HTML5 code for syntax errors online. This html validator no download tool catches missing tags, invalid attributes, duplicate IDs, unclosed elements, and W3C HTML5 spec violations. All validation runs locally in your browser with WCAG and ARIA awareness, so your code stays private.

Check HTML5 code for errors, accessibility, and SEO issues instantly

Checks
Syntax & SEO
Standards
W3C HTML5
Mode
In-browser
Price
Free

W3C Standards

Validates against W3C HTML5 standards for complete compliance.

Accessibility

Checks for WCAG compliance and accessibility issues.

🔒

100% Private

Everything runs locally. Your HTML never leaves your device.

Validate HTML online

Paste your HTML code, click Validate, and review the results for errors, warnings, and suggestions.

Demo fetch uses a CORS-friendly approach only if the target allows it.

Privacy-first

This page processes content locally in your browser (no upload).

What is HTML Validation?

HTML validation is the process of checking HTML code against official W3C HTML5 standards to ensure it's syntactically correct, structurally sound, and follows web development best practices. Our free HTML validator tool analyzes your code to detect errors, warnings, and potential issues that could affect functionality, accessibility, SEO, or performance. This html validator online tool helps you validate HTML5 code online instantly.

When you write HTML code, it's easy to introduce mistakes like missing closing tags, invalid attributes, or structural errors. While modern browsers are forgiving and often render invalid HTML, these errors can cause unexpected behavior, accessibility problems, SEO issues, and compatibility problems across different browsers and devices. Our html syntax checker online helps you catch these issues before they become problems. Validate HTML before deployment to ensure your code is production-ready. For more HTML tools, check out our HTML Tools collection.

FeatureUnvalidated HTMLValidated HTML
Browser CompatibilityInconsistent rendering across browsers, layout breaks, broken functionalityConsistent rendering across all browsers and devices
AccessibilityScreen readers break, missing alt text, improper headings, WCAG violationsWCAG compliant, accessible to all users, proper semantic structure
SEO ImpactPoor crawlability, missing meta tags, improper heading hierarchy, lower rankingsBetter crawlability, proper meta tags, semantic structure, improved rankings
PerformanceSlower parsing, extra browser processing, poor Core Web VitalsFaster parsing, optimized rendering, better Core Web Vitals scores
SecurityMissing rel="noopener", potential XSS vulnerabilities, insecure practicesSecurity best practices, proper link attributes, reduced vulnerabilities
MaintainabilityHard to debug, unclear structure, difficult to maintainClear structure, easier debugging, better maintainability

Invalid HTML

<!DOCTYPE html>
<html>
<head>
  <title>Example</title>
</head>
<body>
  <h1>Welcome</h1>
  <p>This paragraph is not closed
  <img src="image.jpg">
  <a href="link.html">Click here
</body>
</html>

Missing closing tags, missing alt text, unclosed elements

Valid HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example</title>
</head>
<body>
  <h1>Welcome</h1>
  <p>This paragraph is closed.</p>
  <img src="image.jpg" alt="Description">
  <a href="link.html">Click here</a>
</body>
</html>

All tags closed, proper structure, accessibility attributes

What Does HTML Validation Check?

  • Syntax Errors: Missing closing tags, mismatched tags, invalid characters, and malformed HTML structure
  • Required Elements: DOCTYPE declaration, html tag, head tag, title tag, body tag, and other essential HTML5 elements
  • Accessibility Issues: Missing alt text on images, missing lang attribute, improper heading hierarchy, missing ARIA labels, and other WCAG compliance issues
  • SEO Problems: Missing meta description, missing Open Graph tags, improper heading structure, missing title tag, and other SEO best practices
  • Performance Warnings: Missing lazy loading on images, oversized images, missing optimization attributes, and other performance issues
  • Security Issues: External links missing rel="noopener", insecure resources, and other security best practices

According to W3C WCAG guidelines, valid HTML is the foundation of accessible web content. Invalid HTML can break screen readers, cause layout issues, and create barriers for users with disabilities. Our HTML validator checks for both syntax errors and accessibility compliance.

Modern web development workflows should include HTML validation as a standard step. Whether you're building a new website, maintaining existing code, or learning HTML, using an HTML validator helps ensure your code is correct, accessible, and optimized for search engines and performance. For more information on HTML standards, see the MDN HTML documentation and Google's HTML learning guide.

HTML Validation Impact

Real data showing the importance of validating HTML code

85%
Websites Have HTML Errors
According to W3C validation studies
30%
Accessibility Issues
Caused by invalid HTML
25%
SEO Impact
From HTML validation errors
40%
Browser Compatibility
Issues from invalid HTML
📊

Validation Statistics

According to W3C research, over 85% of websites contain HTML validation errors. These errors can cause accessibility problems, SEO issues, browser compatibility problems, and unexpected rendering. Regular HTML validation helps catch and fix these issues before they impact users or search engine rankings.

Why Validate HTML?

Validating HTML code is essential for building reliable, accessible, and search-engine-friendly websites. Our free online HTML validator helps you check HTML code online for errors and issues. Here's why you should make HTML validation part of your development workflow:

Ensure Browser Compatibility

Invalid HTML can render differently across browsers. Chrome, Firefox, Safari, and Edge may handle errors inconsistently, leading to layout breaks, missing content, or broken functionality. Valid HTML ensures consistent rendering across all browsers and devices, reducing cross-browser testing time and user complaints.

Improve Accessibility

Invalid HTML breaks screen readers and assistive technologies. Missing alt text, improper heading hierarchy, and missing ARIA labels prevent users with disabilities from accessing your content. Valid HTML with proper semantic structure is the foundation of WCAG 2.1 compliance. This is not just best practice—it's often a legal requirement.

🎯

Boost SEO Rankings

Search engines like Google prefer valid, well-structured HTML. Missing meta tags, improper heading hierarchy, and invalid structure can hurt your search rankings. Validate HTML for SEO to ensure proper semantic structure. Valid HTML helps search engines understand and index your content better, potentially improving your rankings and organic traffic. Use our html validator for developers to catch SEO issues early, then run the HTML SEO Analyzer for a deeper audit of meta tags and on-page SEO.

🐛

Catch Errors Early

HTML validation catches errors before they cause problems in production. Missing closing tags, invalid attributes, and structural errors can lead to broken layouts, JavaScript failures, and user experience issues. Validating during development saves debugging time and prevents costly fixes after deployment.

Improve Performance

Invalid HTML can cause browsers to spend extra time parsing and fixing errors, slowing down page rendering. Valid HTML renders faster, improving Core Web Vitals metrics like First Contentful Paint (FCP) and Largest Contentful Paint (LCP). Faster pages provide better user experience and can improve search rankings.

🔒

Enhance Security

Valid HTML helps prevent security vulnerabilities. Missing rel="noopener" on external links can expose your site to tabnabbing attacks. Invalid HTML can also make your site more vulnerable to XSS attacks. Validating HTML helps ensure you're following security best practices and protecting your users.

How It Works

Our html validator browser tool uses client-side parsing and rule checking to validate HTML syntax online. This html validation tool free solution works instantly in your browser. Here's how the validation process works:

1

Parse HTML Structure

The validator parses your HTML code to identify all tags, attributes, and structure. It builds a tree representation of your document and checks for proper nesting and hierarchy.

2

Check Syntax Errors

The validator checks for missing closing tags, mismatched tags, invalid attributes, missing required elements (DOCTYPE, html, head, body, title), and other syntax errors that break HTML validity.

3

Validate Accessibility

The validator checks for accessibility issues including missing alt text on images, missing lang attribute, improper heading hierarchy (h1 should be first, no skipped levels), missing ARIA labels, and other WCAG compliance issues.

4

Check SEO & Performance

The validator checks for SEO issues (missing meta description, missing Open Graph tags, improper heading structure) and performance warnings (missing lazy loading, security issues with external links). It generates a comprehensive report with errors, warnings, and suggestions.

Best Practices for HTML Validation

Follow these best practices to ensure your HTML code is valid, accessible, and optimized. Our html validator online instant tool helps you check html errors online quickly. Use this html code validator online regularly to maintain code quality:

1

Always Include DOCTYPE

Every HTML document should start with <!DOCTYPE html>. This tells browsers which HTML version to use and ensures proper rendering. Without it, browsers may enter quirks mode, causing inconsistent rendering.

DO: <!DOCTYPE html>
DON'T: Skip DOCTYPE declaration

2

Close All Tags Properly

Every opening tag must have a corresponding closing tag (except self-closing tags like <img>, <br>). Mismatched or unclosed tags can break layout and functionality.

Test regularly: Validate HTML after major changes, before deployment, and as part of your build process

3

Use Semantic HTML

Use semantic HTML5 elements like <header>, <nav>, <main>, <section>, <article>, and <footer>. These improve accessibility, SEO, and code maintainability.

Semantic benefits: Better accessibility • Improved SEO • Easier maintenance • Clearer code structure

4

Add Accessibility Attributes

Always include alt attributes on images, lang attribute on html tag, proper heading hierarchy (h1 → h2 → h3), and ARIA labels where needed. These are required for WCAG 2.1 compliance.

Accessibility checklist: Alt text on images • Lang attribute • Proper headings • ARIA labels • Keyboard navigation

5

Include Essential Meta Tags

Add essential meta tags for SEO and functionality: charset, viewport, description, and Open Graph tags for social sharing. These improve SEO rankings and user experience.

Essential meta tags: charset="UTF-8" • viewport for mobile • description for SEO • og:tags for social

6

Validate Regularly

Validate your HTML code regularly—after major changes, before deployment, and as part of your build process. Use automated validation in CI/CD pipelines to catch errors early. Regular validation prevents issues from accumulating and becoming harder to fix.

Validation schedule: After code changes • Before deployment • In CI/CD pipeline • During code reviews

Frequently Asked Questions

How do I validate HTML code?

Paste your HTML code into the validator, click Validate, and review the results. The tool checks for syntax errors, missing tags, accessibility issues, SEO problems, and performance warnings. All validation happens locally in your browser for complete privacy.

What HTML errors does the validator detect?

Our HTML validator detects missing DOCTYPE, unclosed tags, mismatched closing tags, missing required elements (html, head, body, title), invalid attributes, and structural issues. It also checks for accessibility problems like missing alt text and SEO issues like missing meta tags.

Do you store my HTML code?

No. This HTML validator processes everything locally in your browser. Your code never leaves your device, ensuring complete privacy and security. No server uploads, no data storage, no privacy concerns.

What's the difference between errors and warnings?

Errors are critical issues that break HTML validity or functionality (missing closing tags, invalid structure). Warnings are important but non-critical issues (missing alt text, missing meta tags). Suggestions are best practices for better SEO, accessibility, and performance.

Does this validator check for accessibility issues?

Yes. Our HTML validator checks for accessibility issues including missing alt text on images, missing lang attribute, improper heading hierarchy, missing ARIA labels, and other WCAG compliance issues. This helps ensure your HTML is accessible to all users.

Can I validate HTML from a URL?

Yes. You can fetch HTML from a URL using the fetch feature, though it may be blocked by CORS policies. Alternatively, copy the HTML source code from your browser's developer tools and paste it into the validator for complete validation.

What SEO issues does the validator check?

The validator checks for missing meta description, missing Open Graph tags, improper heading hierarchy (h1 should be first, no skipped levels), missing title tag, and other SEO best practices. These checks help improve your search engine rankings.

Is this validator based on W3C standards?

Yes. Our HTML validator follows W3C HTML5 standards and checks for compliance with official HTML specifications. It validates syntax, structure, and best practices according to W3C guidelines and modern web standards.

How do I fix HTML validation errors?

Review the validation report to identify errors. Common fixes include: adding missing closing tags, fixing mismatched tags, adding required elements (DOCTYPE, html, head, body, title), correcting invalid attributes, and fixing structural issues. Our validator provides specific suggestions for each error to help you fix them quickly.

What's the difference between HTML validator and linter?

An HTML validator checks code against W3C standards for syntax errors and structural issues. An HTML linter focuses on code quality, style, and best practices. Our tool combines both—it validates HTML syntax and also checks for accessibility, SEO, and performance best practices, making it a comprehensive validation and linting solution.

Can I validate HTML5 code automatically?

Yes. You can integrate HTML validation into your development workflow using CI/CD pipelines, pre-commit hooks, or build tools. For quick validation, our free online HTML validator provides instant results without any setup. Validate HTML before deployment to catch errors early and maintain code quality.

Why is HTML validation important for SEO?

Valid HTML helps search engines understand and index your content better. Invalid HTML can cause parsing errors, missing meta tags, improper heading hierarchy, and accessibility issues—all of which can hurt SEO rankings. Valid HTML with proper semantic structure improves crawlability, indexing, and search engine visibility.

HTML Validation Guides

Step-by-step guides for validating HTML in different scenarios:

All HTML Validator guides (20 total)

Related HTML & Developer Tools

Explore our complete suite of developer tools for HTML and web development:

Detects unclosed and mismatched tags

🔒

Finds attribute syntax errors

Reports malformed HTML elements

Free with no sign-up

Cost
Free tier
Sign-up
Not required
Processing
Tool-specific
Privacy
Clearly disclosed
IframeResponsiveAttribution included

Add this HTML Validator to your website

Drop the HTML Validator into a blog post, product docs, intranet, or school portal with one iframe. Processing, privacy, and usage limits are the same as on the full tool page.

  • One copy-ready line of HTML
  • Responsive — adapts to any container width
  • No API credentials are placed in the snippet

Embed code

<iframe
  src="https://www.fixtools.io/html/html-validator?embed=1"
  width="100%"
  height="780"
  frameborder="0"
  style="border:0;border-radius:16px;max-width:900px;"
  title="HTML Validator by FixTools"
  loading="lazy"
  allow="clipboard-write"
></iframe>

Attribution-friendly: a small "Powered by FixTools" link appears in the embed footer.

Syntax Errors vs Validation Errors: Understanding the Difference

HTML errors fall into two distinct categories, and conflating them leads to confusion when reading checker output. A syntax error is a violation of the basic grammatical rules of HTML markup: a missing closing quote on an attribute value, an angle bracket used inside an attribute string, or a tag that is opened but never closed. These errors prevent the parser from correctly tokenising the document. The HTML parser spec (WHATWG Section 13.2.3) defines specific tokenisation states, and syntax errors cause the tokeniser to enter error-handling branches that produce unpredictable output across different browsers.

Validation errors, by contrast, are errors of semantics and conformance. The markup is parseable: the tokeniser can read it, but the resulting DOM violates specification rules. Examples include nesting a block-level element like a paragraph inside an inline element like a span, using an attribute value that is not in the permitted enumerated set, or omitting a required attribute like alt on an image element. These errors do not break parsing but they do produce a non-conforming document that may behave incorrectly in specific contexts such as screen readers or search engine crawlers.

In practice, most syntax checkers report both categories together, labelling everything as errors. The distinction matters when you are triaging a large error list. Syntax errors should be fixed first because they affect how every subsequent element is parsed. A single missing closing quote on line 10 can cause the next 50 attribute values to be misread. Validation errors are then addressed in a second pass once the document structure is clean and the parser output is deterministic, because only then can you trust that the remaining errors are independent issues rather than downstream effects of an earlier syntax failure.

Treating syntax and validation as a two-pass workflow also helps with code review. Syntax-clean HTML is a precondition for any meaningful semantic discussion, because reviewers cannot reason about element relationships when the tree is mangled by recovery rules. Running the syntax checker first lets you hand over markup that a reviewer can actually read at face value, focusing review attention on whether the element choices are correct rather than on whether the markup parses in the first place.

How to use this tool

💡

Paste your HTML and run the syntax checker. Every syntax error is reported with a description and location so you can fix it quickly.

How It Works

Step-by-step guide to html syntax checker online:

  1. 1

    Format your HTML first

    Paste your raw markup into the HTML Formatter to apply consistent indentation before checking syntax. Properly indented HTML reveals nesting mistakes visually and makes the line numbers reported by the syntax checker line up with elements you can actually see on screen rather than dense blocks of unbroken text.

  2. 2

    Paste into the validator

    Move the formatted HTML into the validator input panel. The check accepts any length of content from a single component to a complete page, and it does not need the document to compile or render anywhere first. Pasting and pressing the action button is all that is required to begin.

  3. 3

    Check for syntax errors

    Click Validate to run the syntax pass. Errors and warnings appear as a structured list, with each entry showing the line number, a short description of the rule that was violated, and where applicable a hint about the most likely fix. The list is ordered by document position so reading top to bottom matches the order of the source.

  4. 4

    Fix from top to bottom

    Apply the first fix in your editor, then revalidate before moving to the second error. Syntax errors frequently cascade so the count often drops by more than one per cycle. Working strictly top to bottom is the fastest reliable way to converge on a clean result without chasing phantom downstream errors that disappear on their own.

Real-world examples

Common situations where this approach makes a real difference:

Layout suddenly breaks after editing

A previously working page layout collapses after what looked like a routine edit. Pasting the modified HTML into the syntax checker surfaces the exact line where an unclosed div or misplaced closing tag changed the document tree. The fix is usually a single character, but it is invisible without a tool that walks the source the way a parser would. The five seconds spent running the check replaces ten minutes of guessing about which recent change broke the layout.

Code review of HTML from a junior developer

Before approving an HTML pull request from a less experienced contributor, paste the changed files into the syntax checker as a first pass. The basic mistakes such as mismatched quotes, duplicate IDs, and stray closing tags are caught automatically, freeing reviewer attention for the architectural and semantic decisions that actually require human judgement. This keeps reviews focused and turnaround times short while still maintaining a high quality bar.

When to use this guide

Use this when a page is rendering unexpectedly and you suspect a structural HTML error, or before committing HTML to a shared codebase.

Pro tips

Get better results with these expert suggestions:

1

Use browser DevTools as a first syntax check

Before running a dedicated syntax checker, open your page in Chrome DevTools and check the Elements panel. The browser will show you the DOM it actually parsed: mismatched tags and unclosed elements are often visible as unexpected nesting in the tree, giving you a quick first diagnosis before formal validation.

2

Validate email HTML separately from web HTML

HTML rendered in email clients (Outlook, Gmail, Apple Mail) follows different rules than browser HTML. Inline all CSS, avoid <link> and <script> tags, and use table-based layouts for email. Use a dedicated email HTML validator or Litmus rather than a browser-based HTML validator for email template work.

3

Look for missing quotes on attribute values

A common syntax error that browsers silently fix but that breaks other parsers: attribute values without quotes, like <img src=image.jpg> instead of <img src='image.jpg'>. This causes the space-delimited token after the value to be parsed as a new attribute name, silently corrupting the element.

4

Check for smart quotes replacing standard quotes

Copy-pasting HTML from word processors or design tools often replaces straight quotes (") with smart or curly quotes. Smart quotes are not valid HTML attribute delimiters and break attribute parsing. The HTML syntax checker will flag these. Search your source for the curly quote characters and replace them with straight quotes.

5

Common HTML syntax errors to watch for

The most frequent HTML syntax errors are: unclosed tags, missing closing quotes on attribute values, using < or > inside attribute values, and duplicate IDs.

6

Syntax errors compound

One missing closing tag can cause all subsequent elements to be flagged as errors. Fix errors starting from the top of the file and re-check after each fix.

7

Use a formatter first

Format your HTML before syntax checking. Properly indented HTML makes syntax errors visually obvious before you even run the checker. Syntax errors in HTML have outsized downstream impact. A missing closing tag can cascade through DOM parsing, breaking every script and stylesheet that depends on element positioning. A dedicated syntax checker catches these errors at the source rather than at runtime, when symptoms appear far from the actual cause. Pair the syntax checker with a linter that catches semantic issues (missing alt attributes, missing labels) for the strongest defence against ship-blocking bugs. Many teams adopt both as pre-commit hooks so every PR gets validated automatically. Modern HTML syntax has evolved beyond what older validators recognize. Custom elements introduced for web components require their own validation rules. Slot elements inside templates have nesting requirements that differ from standard children. Our syntax checker stays current with the HTML Living Standard, so newer features get validated correctly rather than flagged as unknown tags. This matters for design-system teams building reusable components that depend on custom elements for encapsulation. Catching syntax issues in custom-element markup before publish prevents the component from breaking silently in consuming projects, where the symptom appears far from the actual cause.

FAQ

Frequently asked questions

The recurring offenders are unclosed tags (especially div, p, and li), missing closing quotes on attribute values, duplicate id attributes, block elements placed inside inline elements, and deprecated elements left over from HTML4-era code. Almost every project meets these errors regularly because they slip past human review easily and only show up when you compare the markup to the formal spec. Running the syntax checker on every meaningful change is the simplest way to keep the list short.
A syntax checker covers structural issues like unclosed tags, invalid nesting, mismatched quotes, and missing required attributes. It does not assess accessibility beyond the markup-level rules, it does not measure performance, and it does not check whether your CSS or JavaScript works. For a complete quality pass you combine syntax checking with an accessibility audit, a performance audit, and end-to-end functional testing. Each tool has a defined scope and using them together yields the most reliable coverage.
A syntax error breaks the parser ability to tokenise the document correctly, for example a missing closing quote that confuses where one attribute ends and the next begins. A validation error means the document is parseable but non-conforming, such as using a deprecated element, omitting a required attribute, or violating a content model rule. Both appear in checker output, but syntax errors take priority because they distort the parse tree on which all other rules depend.
HTML parsers are sequential. When the parser encounters a syntax error such as a missing closing tag, it enters error recovery and may misinterpret every following element until it finds a recoverable state. The downstream effects appear as additional reported errors that have no real cause of their own. Fixing the original error usually eliminates many of these downstream entries at once, which is why the error count often drops dramatically after a single well-targeted edit at the top of the file.
Both are useful and they catch different problems. Fragment checking catches component-level errors before they are assembled into a page, which matters in component-driven frameworks where a single bad component can replicate across the entire site. Full-page checking catches document-level issues such as missing doctype, duplicate IDs across components, and head section errors that no fragment-level check could reach. A healthy workflow combines both: fragments during development and full pages before each deployment.
Yes, but you need the rendered HTML output, not the framework template source. JSX, Vue templates, Angular component templates, and similar dialects contain syntax that is not valid HTML and will produce false errors. Copy the HTML from the browser View Source or from the DevTools Elements panel after the framework has hydrated the page, then paste that output into the checker. The result is an honest measurement of what users actually receive.
A stray end tag error means the validator found a closing tag with no corresponding opening tag, for example a </div> that appears after every opened div has already been closed. The usual root cause is either an extra closing tag that was added during an edit or a missing opening tag earlier in the file. Reading the markup backwards from the reported error often makes the asymmetry obvious. Fixing it is normally a one-line change once you know where to look.
In HTML5, quotes are technically optional on attribute values that contain no whitespace or special characters. However, omitting quotes is a frequent source of errors when values are later edited to include a space or an equals sign, because the parser then reads the extra content as a new attribute. Validators will not flag simple unquoted values, but they will flag unquoted values that contain characters which require quoting. Keeping every attribute quoted is a small habit that prevents an entire class of bugs.
Yes, but the error messages are harder to act on because line numbers refer to a small number of very long lines. Always run minified HTML through a formatter first so that the reported locations correspond to visually distinct lines. Once the document is indented, the syntax checker becomes substantially easier to use and the fix loop runs at the same speed as it does on hand-written HTML. Beyond catching obvious syntax errors, modern HTML syntax checkers also flag deprecated tags, missing required attributes, and inconsistent quote usage. The HTML specification has tightened considerably since the HTML 4 era. Running syntax checks on every commit prevents legacy patterns from creeping into modern codebases, especially when developers paste snippets from older Stack Overflow answers that predate modern best practices. Modern HTML syntax checkers also integrate with editor extensions, surfacing errors inline as you type. VS Code, WebStorm, and Sublime Text all support extensions that run html-validate or similar tools against open files in real-time, catching issues immediately rather than during a separate validation step. Some teams now require validation reports to be attached to every release ticket as evidence of quality control. Long-term maintenance benefits also accrue. Codebases that pass syntax checks consistently are easier for new contributors to read and modify, since the markup follows predictable patterns. New team members can become productive faster when the codebase enforces consistent style through automation rather than relying on tribal knowledge passed down through code review.
Yes, configure husky or pre-commit to run html-validate against staged HTML files, blocking commits that introduce syntax errors. This catches issues before they reach the repository, eliminating an entire class of CI failures.

Related guides

More use-case guides for the same tool:

Ready to get started?

Open HTML Validator to review its free limits and processing method.

Open HTML Validator →

Free tier · No account needed · Transparent limits