D3stiny's Tools

Welcome to d3tools, or D3stiny's Tools, or whatever you want to call it. This site isn't much but it is a collection of items and tools that I made, or put together in one spot. It could be my stream pelting tool you want to use, or one of the simple web tools I put together or even browse my recommended items. What ever your reason for being here, welcome and enjoy your stay!

Flip / Unflip

A very simple decision. Flip? or Unflip? Perfect for those instances where you want to flip something, or someone, but there is no easy way to do it. Just put the name of the thing, or person, you want to flip in the text box, select if you are flipping or putting them back and hit GO!


const flipMap = { 'a': 'ɐ', 'b': 'q', 'c': 'ɔ', 'd': 'p', 'e': 'ǝ', 'f': 'ɟ', 'g': 'ƃ', 'h': 'ɥ', 'i': 'ᴉ', 'j': 'ɾ', 'k': 'ʞ', 'l': 'ʃ', 'm': 'ɯ', 'n': 'u', 'o': 'o', 'p': 'd', 'q': 'b', 'r': 'ɹ', 's': 's', 't': 'ʇ', 'u': 'n', 'v': 'ʌ', 'w': 'ʍ', 'x': 'x', 'y': 'ʎ', 'z': 'z', 'A': '∀', 'B': '𐐒', 'C': 'Ɔ', 'D': 'p', 'E': 'Ǝ', 'F': 'Ⅎ', 'G': 'פ', 'H': 'H', 'I': 'I', 'J': 'ſ', 'K': 'ʞ', 'L': '˥', 'M': 'W', 'N': 'N', 'O': 'O', 'P': 'Ԁ', 'Q': 'Q', 'R': 'ɹ', 'S': 'S', 'T': '┴', 'U': '∩', 'V': 'Λ', 'W': 'M', 'X': 'X', 'Y': '⅄', 'Z': 'Z', '0': '0', '1': 'Ɩ', '2': 'ᄅ', '3': 'Ɛ', '4': 'ㄣ', '5': 'ϛ', '6': '9', '7': 'ㄥ', '8': '8', '9': '6', '.': '˙', ',': "'", "'": ',', '"': ',,', '`': ',', '!': '¡', '?': '¿', '[': ']', ']': '[', '(': ')', ')': '(', '{': '}', '}': '{', '<': '>', '>': '<', '&': '⅋', '_': '‾' }; function flipText(text) { return text.split('') .reverse() .map(c => flipMap[c] || flipMap[c.toLowerCase()] || c) .join(''); } function doFlip() { const text = document.getElementById("inputText").value; const action = document.querySelector('input[name="action"]:checked').value; let result = ""; if (action === "flip") { result = "(╯°□°)╯︵ " + flipText(text); } else { result = text + " ノ( ゜-゜ノ)"; } document.getElementById("Flip").textContent = result; } // Trigger doFlip() when pressing Enter in the text field document.getElementById("inputText").addEventListener("keypress", function(e) { if (e.key === "Enter") { e.preventDefault(); doFlip(); } });

Mocking Text

Want to make a point of letting someone know you really don't care what they have to say? Why not send back their same message in a mocking way! Slap the text in the text box below!

function mockText() { const input = document.getElementById("inputmock").value; let output = ''; for (let i = 0; i < input.length; i++) { const char = input[i]; output += Math.random() > 0.5 ? char.toUpperCase() : char.toLowerCase(); } document.getElementById("Mock").textContent = output; document.getElementById("copyBtn").disabled = output.length === 0; } async function copyMock() { const text = document.getElementById("Mock").textContent || ''; if (!text) return; const btn = document.getElementById("copyBtn"); try { await navigator.clipboard.writeText(text); } catch { const ta = document.createElement('textarea'); ta.value = text; ta.style.position = 'fixed'; ta.style.opacity = '0'; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta); } const old = btn.textContent; btn.textContent = 'Copied!'; btn.disabled = true; setTimeout(() => { btn.textContent = old; btn.disabled = text.length === 0; }, 1200); } // Enter = mock; Shift+Enter = newline document.getElementById("inputmock").addEventListener("keydown", function(e) { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); mockText(); } });

Text Reverser

Do I really need to explain what this does? Really? Fine... This tool will take what ever text you put in and, just like magic, make it reversed. What is this useful for? Hell if I know... Did someone send you text backwares? Want to send someone text backwards. Slap the text the box below!

function reverseText() { const input = document.getElementById("reverseInput").value; const reversed = input.split('').reverse().join(''); document.getElementById("reverseResult").textContent = reversed; document.getElementById("copyReverseBtn").disabled = reversed.length === 0; } async function copyReverse() { const text = document.getElementById("reverseResult").textContent || ''; if (!text) return; const btn = document.getElementById("copyReverseBtn"); try { await navigator.clipboard.writeText(text); } catch { const ta = document.createElement('textarea'); ta.value = text; ta.style.position = 'fixed'; ta.style.opacity = '0'; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta); } const old = btn.textContent; btn.textContent = 'Copied!'; btn.disabled = true; setTimeout(() => { btn.textContent = old; btn.disabled = text.length === 0; }, 1200); } // Enter = reverse; Shift+Enter = newline document.getElementById("reverseInput").addEventListener("keydown", function(e) { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); reverseText(); } });

Magic 8 Ball

Do you have a hard time making decisions? Want to have someone, well... something... make the decision for you? Slap your query in the box below and see what happens?
(please don't make important or life decisions with this thing...)

const responses = [ "Yes.","No.","Maybe...","Ask again later.","Definitely.","Absolutely not.", "Without a doubt.","Don't count on it.","Signs point to yes.","Very doubtful.", "You're not ready for that answer.","LOL no.", "Outlook not so good.","It is certain.","My sources say no.","The stars say yes.", "Try again tomorrow.","Don’t hold your breath.","As I see it, yes.", "Not in this lifetime.","The universe approves.","You already know the answer.", "I wouldn’t bet on it.","Looks promising.","No chance at all.", "The vibes are strong—yes.","Cloudy with a chance of nope.","All signs point to no.", "It’s basically guaranteed.","Fifty-fifty. Flip a coin.","Nah, chief.", "Ask again after coffee.","Not today.","Absolutely!","You’ll regret it if you do.", "Trust your gut, not me.","Yeah, but only on Tuesdays.","LOL definitely not.", "Without hesitation, yes.","You already asked that.","Let me nap on it first.", "That’s a hard no from me." ]; function shakeBall() { const question = document.getElementById("question").value.trim(); const response = document.getElementById("response"); const copyBtn = document.getElementById("copyRespBtn"); if (question === "") { response.textContent = "You gotta ask something😜"; copyBtn.disabled = true; return; } const answer = responses[Math.floor(Math.random() * responses.length)]; response.textContent = answer; copyBtn.disabled = false; } async function copyResponse() { const text = document.getElementById("response").textContent || ''; if (!text) return; const btn = document.getElementById("copyRespBtn"); try { await navigator.clipboard.writeText(text); } catch { const ta = document.createElement('textarea'); ta.value = text; ta.style.position = 'fixed'; ta.style.opacity = '0'; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta); } const old = btn.textContent; btn.textContent = 'Copied!'; btn.disabled = true; setTimeout(() => { btn.textContent = old; btn.disabled = text.length === 0; }, 1200); }

Coin Flip

Hey, making a decision is hard. Sometimes you just need someone or something to make the call for you. Sometimes a simple coin flip is all you need! Don't have a coin? Use this!

function flipCoin() { const result = Math.random() < 0.5 ? "Heads 🪙" : "Tails 🪙"; document.getElementById("coinResult").textContent = result; }

Color Picker

Sometimes you just need that perfect color. Or you know its HEX code or its RGB but want to know what it is in the other. Well this tool should give you just that!





R: G: B:

function updateFromPicker() { const color = document.getElementById("colorPicker").value; document.getElementById("hexInput").value = color; const r = parseInt(color.substr(1, 2), 16); const g = parseInt(color.substr(3, 2), 16); const b = parseInt(color.substr(5, 2), 16); document.getElementById("rInput").value = r; document.getElementById("gInput").value = g; document.getElementById("bInput").value = b; document.getElementById("previewBox").style.backgroundColor = color; } function updateFromHex() { let hex = document.getElementById("hexInput").value.trim(); if (!hex.startsWith('#')) hex = '#' + hex; if (/^#([0-9A-Fa-f]{6})$/.test(hex)) { document.getElementById("colorPicker").value = hex; const r = parseInt(hex.substr(1, 2), 16); const g = parseInt(hex.substr(3, 2), 16); const b = parseInt(hex.substr(5, 2), 16); document.getElementById("rInput").value = r; document.getElementById("gInput").value = g; document.getElementById("bInput").value = b; document.getElementById("previewBox").style.backgroundColor = hex; } } function updateFromRGB() { const r = parseInt(document.getElementById("rInput").value) || 0; const g = parseInt(document.getElementById("gInput").value) || 0; const b = parseInt(document.getElementById("bInput").value) || 0; const hex = "#" + [r, g, b].map(x => { const h = x.toString(16); return h.length === 1 ? "0" + h : h; }).join(''); document.getElementById("hexInput").value = hex; document.getElementById("colorPicker").value = hex; document.getElementById("previewBox").style.backgroundColor = hex; } // Minimal fix: also listen via JS (Carrd-safe) const picker = document.getElementById("colorPicker"); picker.addEventListener("input", updateFromPicker); picker.addEventListener("change", updateFromPicker); // Optional: initialize preview if picker has a default value if (picker.value) updateFromPicker();

Discord Timestamp

Lets face it. Time zones suck. And planning ANYTHING across time zones sucks ever more. And doing so on discord can be painful as well. Well if you want to put a time down that will localize for who ever is reading it, select it here and copy the output and paste into discord. Who ever reads it will see the date and time appear local to them!

Pick Date & Time:
Select Format:

QR Code Generator

Straight to the point. Put the website you want to make a QR Code for in the text box and a QR Code will be generated below. This is very helpful when you want a easy way for someone with mobile to go to a website from a printed form or maybe a badge to show on a video or stream.






function generateQR() { const text = document.getElementById("qrInput").value; const qrContainer = document.getElementById("qrContainer"); qrContainer.innerHTML = ""; new QRCode(qrContainer, { text: text || "https://example.com", width: 256, height: 256, correctLevel: QRCode.CorrectLevel.H }); }

Wheel Spin!