What is the Correct HTML for Creating Hyperlinks?
Hyperlinks are the backbone of the web, connecting information across pages and sites through clickable links. Mastering hyperlink creation is a core web development skill.
This comprehensive guide will dive deep into proper HTML linking syntax, including anchor tags, URLs, best practices, and specialized link types. Follow along as we analyze hyperlink implementation from a full-stack perspective.
Anchor Tag Refresher
Anchor tags provide the base markup for defining links:
<a href="url">Link Text</a>
The key aspects are:
<a>
: The anchor taghref
: Specifies the target destinationLink Text
: The visible clickable text
For example:
<a href="https://example.com">Visit the Example Website</a>
Will output:
Visit the Example Website
When clicked, users will be navigated to https://example.com.
Now let‘s explore more advanced linking approaches.
Link Protocols
The start of the href
denotes what protocol should handle the link:
Prefix | Description | Example |
---|---|---|
https:// |
Secured web address | https://example.com |
http:// |
Unsecured web address | http://example.com |
mailto: |
Email address | mailto:user@example.com |
tel: |
Telephone number | tel:+15555555555 |
# |
Page fragment identifier | index.html#section2 |
Use HTTPS connections whenever possible to keep user traffic secured.
Absolute vs Relative URLs
The reference URL can use either a full absolute or contextual relative path:
Absolute URLs include the full domain, like:
<a href="https://wikipedia.org">Wikipedia</a>
Relative URLs give file paths within the host, like:
<a href="/about-page">About</a>
Absolute URLs target external sites, while relative URLs link internally.
Link Best Practices
When adding links, adhere to these best practices:
Descriptive Link Text
- Summarize where the links lead
- Concise yet informative
- Avoid generic terms like "click here"
Make Links Visually Obvious
- Styled differently than regular text
- Underlined links with blue color
- Clear visual affordance for clicks
Reference Absolute Domains Externally
- Use full URLs like
https://example.com
for outbound sites - Ensures visitors leave rather than cause 404 errors
Keep Internal Links Relative
- Use relative file paths like
/about
and./contact
- Prevents breaking if domains change
- Easier to rearrange site structure
Open External Sites in New Tabs
- Adds
target="_blank" rel="noopener"
- Allows visitors to easily return to your site
- Improves ability to measure traffic sources
Meet Accessibility Standards
- Ensure readable color contrast
- Support keyboard navigation
- Allow text scaling without loss of content
- Provide contextual link text for screen readers
Now let‘s see some more advanced linking implementations…
Specialized Hyperlink Types
Beyond basic links, a few other interactive elements can help connect website content:
Button Links
Links styled to appear visually as clickable buttons:
<a class="btn" href="/quote">Request Quote</a>
This adds UI affordance indicating it can be clicked or tapped.
Image Links
Adding links to images:
<a href="https://example.com">
<img src="logo.png" alt="Example logo">
</a>
Now clicking the logo will go to the website.
Document Links
Downloaded document links:
<a href="/files/report.pdf" download>
Download Report
</a>
This prompts saving instead of opening documents.
Fragment Links
Jump links navigating document sections:
<a href="#section2">Section 2</a>
<h2 id="section2">Section 2</h2>
Fragment IDs connect content within a page.
There are many other types of links in HTML to be aware of as well.
Styling Links
Links can be styled using CSS to create more usable designs:
/* Unvisited link */
a:link {
color: #FF0000;
}
/* Visited link */
a:visited {
color: #00FF00;
}
/* Mouse over link */
a:hover {
color: #FF00FF;
}
/* Selected link */
a:active {
color: #0000FF;
}
This sets different colors based on their state:
- Link: Default link style
- Visited: After clicked
- Hover: When moused over
- Active: When clicked down
Colors provide an additional state affordance beyond just underlines.
When styling links, ensure enough contrast remains between text colors. Light shades on bright backgrounds can strain readability.
Programmatically checking contrast helps avoid this:
const bgColor = ‘#F5F5F5‘; // Background
const fgColor = ‘#EEE‘; // Foreground
const contrastRatio = getContrastRatio(bgColor, fgColor);
if (contrastRatio < 4.5) {
// Colors need more contrast
}
Webaim‘s color contrast checker is a great reference too.
Beyond color, also provide identifiable focus outlines for keyboard and assistive tech users.
Link Behavior Statistics
Understanding how visitors interact with links helps improve page designs:
Mobile Usage
- ~60% of clicks are mobile devices [1]
- Overlapping elements frustrating on small touch targets
- Utilize tappable space around links
Attention Spans
- 53% exit site after activating one link [2]
- Reduce distance to key content
- Provide clear pathways
Engagement Times
- 70% of engagements under 10 seconds [3]
- Prioritize what to link prominently
- Link actionability indicates relevance
With mobile usage dominating, ensure links have spacing for error tolerant tapping. Since attention spans are short, right-size linking architectures to get users to key content faster.
Browser Link Standards
Links behave according to standardized browser rules and limitations:
- Links can only target one location
- URLs limited to 2,083 chars in IE and Safari [4]
- No JavaScript or CSS support in hrefs
- Restricted pseudo-class support
- Limited
target
names beyond_blank
- Cross-origin restrictions
Test links across browsers to validate consistent functionality. Polyfills can help normalize proprietary quirks between IE, Firefox, Chrome and others.
Troubleshooting Broken Links
With sizeable sites, it‘s common to end up with broken links over time. Strategies for discovering and fixing them include:
Link Checkers
Automated crawlers that identify broken URLs:
Manual Testing
Clicking site navigation links to confirm destinations.
404 Monitoring
Analytics tracking of 404 errors from bad links.
Redirect Handling
301 redirects on reorganized content.
Having both automated alerts and manual QA ensures quality links that don‘t break over time.
Link Annotations
Links can be annotated in documentation using special syntax:
[I‘m an inline-style link](https://www.example.com)
[I‘m an inline-style link with title](https://www.example.com "Example website")
[I‘m a reference-style link][arbitrary case-insensitive reference text]
[You can use numbers for reference-style link definitions][1]
Or leave it empty and use the [link text itself].
URLs and URLs in angle brackets will automatically get turned into links.
http://www.example.com or <http://www.example.com>
[arbitrary case-insensitive reference text]: https://www.mozilla.org
[1]: https://slashdot.org
[link text itself]: https://www.reddit.com
This Markdown formatting is rendered as:
I‘m an inline-style link with title
You can use numbers for reference-style link definitions
Or leave it empty and use the link text itself.
URLs and URLs in angle brackets will automatically get turned into links.
http://www.example.com or http://www.example.com
Using a mix of inline, full reference, shorthand reference, and auto-detected links provides readable documentation.
Server-Side vs Client-Side Links
Links can be generated on both server and client-side:
Server-Side
- ASP.NET Razor HyperLink
- JSP
<a>
tag - PHP
echo
HTML - Renders initial HTML
Client-Side
- React Router
<Link>
- Angular Router
<a>
- Handles navigation dynamically
- Good for single page apps
Server-side generation provides initial static content for crawlers. Client-side then manages updates as users interact without full page refreshes.
Connecting Front-End Frameworks
Modern JavaScript web apps utilize component-based frameworks like React, Angular and Vue:
React
import { Link } from ‘react-router-dom‘;
function Nav() {
return (
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
</nav>
);
}
The <Link>
component renders anchor tags.
Angular
<nav>
<a routerLink="/">Home</a>
<a routerLink="/about">About</a>
</nav>
The routerLink
directive handles linking.
Vue
<nav>
<router-link to="/">Home</router-link>
<router-link to="/about">About</router-link>
</nav>
Special <router-link>
components mark links.
This allows navigating between dynamic views in the app without full page loads.
Final Link Development Tips
Here are some last useful tips when working with hyperlinks:
- Use CSS
:focus
for visible keyboard focus - Validate links with testing tools like Cypress
- Prevent tabbing to offscreen links with
tabindex="-1"
- Always put links on their own lines for clean markup
- Watch out for link hijacking vulnerabilities
- Mind text length limits on URLs [4]
Getting into the habit of adding quality links that follow web standards will serve you well as you progress as a developer.
Key Takeaways
We covered quite a lot regarding hyperlink implementation in HTML, including:
- Anchor tags form the base for links
- Many protocols indicate destinations like HTTPS, mailto: and tel:
- Observe accessibility and web conventions
- Additional link types expand interactivity
- Both servers and client apps utilize linking
- Build consistently functioning navigation
With the correct markup and forethought, you can create hyperlinks that provide access to connected resources with speed and precision.
Hopefully this guide gave you an authoritative full-stack overview of proper HTML hyperlinking approaches across a range of topics. Feel free to reference it as you develop the bonds connecting your websites and applications together!