<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-patible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="z9n.net’s Connections Platform is more than a free URL shortener, with robust link management software, and a Link-in-bio solution.">
<link rel="icon" href="/frontend/assets/img/favicon.ico">
<title>URL Shortener - Short URLs & Custom Free Link Shortener | z9n.net</title>
<link rel="stylesheet" href="/frontend/dist/styles.css">
<style>
body {
background-color: #9c27b0;
}
</style>
<style>
.btn-primary {
background-color: #9c27b0;
border-color: #9c27b0;
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active {
background-color: #8d18a1;
border-color: #8d18a1;
}
</style>
</head>
<body>
<style>ul#admin_menu li:not(.frontend_link) {display: none}</style>
<div class="container-fluid h-100">
<div class="row justify-content-center align-items-center h-100">
<div class="col-12 col-lg-10 col-xl-8 col-xxl-5 mt-5">
<div class="card border-0 mt-5">
<div class="text-center">
<img src="https://z9n.net/frontend/assets/img/logo-black.png" alt="Logo" width="95px" class="mt-n5">
</div>
<div class="card-body px-md-5">
<p>z9n.net’s Connections Platform is more than a free URL shortener, with robust link management software, and a Link-in-bio solution.</p>
<form id="shortenlink" method="post" action="">
<div class="input-group input-group-block mt-4 mb-3">
<input type="url" name="url" id="url" class="form-control text-uppercase" placeholder="PASTE URL, SHORTEN & SHARE" aria-label="PASTE URL, SHORTEN & SHARE" aria-describedby="shorten-button" required>
<input class="btn btn-primary text-uppercase py-2 px-4 mt-2 mt-md-0" type="submit" id="shorten-button" value="Shorten" />
</div>
<a class="btn btn-sm btn-white text-black-50 text-uppercase" data-bs-toggle="collapse" href="#customise-link" role="button" aria-expanded="false" aria-controls="customise-link">
<img src="https://z9n.net/frontend/assets/svg/custom-url.svg" alt="Options"> Customise Link
</a>
<div class="collapse" id="customise-link">
<div class="mt-2 card card-body">
<div class="d-flex align-items-center">
<span class="me-2">z9n.net/</span>
<input type="text" name="keyword" class="form-control form-control-sm text-uppercase" placeholder="CUSTOM URL" aria-label="CUSTOM URL">
</div>
</div>
</div>
</form>
</div>
</div>
<div class="d-flex flex-column flex-md-row align-items-center my-3">
<span class="text-white fw-light">© 2024 z9n.net</span>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<script>
// From https://stackoverflow.com/a/30810322
function fallbackCopyTextToClipboard(text) {
var textArea = document.createElement("textarea");
textArea.value = text;
// Avoid scrolling to bottom
textArea.style.top = "0";
textArea.style.left = "0";
textArea.style.position = "fixed";
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';
console.log('Fallback: Copying text command was ' + msg);
} catch (err) {
console.error('Fallback: Oops, unable to copy', err);
}
document.body.removeChild(textArea);
}
function copyTextToClipboard(text) {
if (!navigator.clipboard) {
fallbackCopyTextToClipboard(text);
return;
}
navigator.clipboard.writeText(text).then(function() {
console.log('Async: Copying to clipboard was successful!');
}, function(err) {
console.error('Async: Could not copy text: ', err);
});
}
const copyBtn = document.querySelector('button#copy-button');
if (copyBtn) {
copyBtn.addEventListener('click', function(event) {
copyTextToClipboard(event.target.dataset.shorturl);
});
}
const closeShortenedLinkScreenButton = document.querySelector('button#close-shortened-screen');
if (closeShortenedLinkScreenButton) {
closeShortenedLinkScreenButton.addEventListener('click', function(event) {
window.location.href=window.location.href;
});
}
</script>
<script src="https://www.google.com/recaptcha/api.js?render=6Le6MJEnAAAAAGnJkjCMfa905F2_bjJV962I_RDh"></script>
<script>
const shortenForm = document.querySelector("form#shortenlink");
if (shortenForm) {
shortenForm.addEventListener("submit", function(e){
e.preventDefault();
grecaptcha.ready(function() {
grecaptcha.execute('6Le6MJEnAAAAAGnJkjCMfa905F2_bjJV962I_RDh', {action: 'shorten_link'}).then(function(token) {
const tokenInput = document.createElement("input");
tokenInput.setAttribute("type", "hidden");
tokenInput.setAttribute("name", "token");
tokenInput.setAttribute("value", token);
const actionInput = document.createElement("input");
actionInput.setAttribute("type", "hidden");
actionInput.setAttribute("name", "action");
actionInput.setAttribute("value", "shorten_link");
shortenForm.prepend(tokenInput);
shortenForm.prepend(actionInput);
shortenForm.submit();
});
});
});
}
</script>
</body>
</html>