YouTube Thumbnail Downloader



YouTube Thumbnail Downloader

YouTube Thumbnail Downloader

Thumbnail
body { font-family: Arial, sans-serif; background-color: #f0f0f0; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; height: 100vh; } .container { text-align: center; background-color: #fff; padding: 20px; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); max-width: 600px; width: 100%; } h1 { color: #007bff; } .url-input { width: 100%; padding: 10px; margin: 10px 0; border: 1px solid #ccc; border-radius: 5px; font-size: 16px; } .btn { background-color: #007bff; color: #fff; border: none; padding: 10px 20px; margin: 5px; border-radius: 5px; cursor: pointer; } .thumbnail-container { margin-top: 20px; } .thumbnail { max-width: 100%; height: auto; display: none; } const youtubeURLInput = document.getElementById("youtubeURL"); const downloadButton = document.getElementById("downloadButton"); const thumbnailImage = document.getElementById("thumbnailImage"); downloadButton.addEventListener("click", () => { const youtubeURL = youtubeURLInput.value; if (isValidYouTubeURL(youtubeURL)) { const videoID = extractVideoID(youtubeURL); const thumbnailURL = `https://img.youtube.com/vi/${videoID}/maxresdefault.jpg`; thumbnailImage.src = thumbnailURL; thumbnailImage.style.display = "block"; } else { alert("Please enter a valid YouTube video URL."); } }); function isValidYouTubeURL(url) { const pattern = /^(https?:\/\/)?(www\.)?youtube\.com\/watch\?v=.{11}$/; return pattern.test(url); } function extractVideoID(url) { const matches = url.match(/(v=|\/)([a-zA-Z0-9_-]{11})/); return matches ? matches[2] : null; }

text to speech



Text to Speech Converter

Text to Speech Converter

body { font-family: Arial, sans-serif; background-color: #f0f0f0; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; height: 100vh; } .container { text-align: center; background-color: #fff; padding: 20px; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); max-width: 600px; width: 100%; } h1 { color: #007bff; } .text-input { width: 100%; height: 200px; padding: 10px; margin: 10px 0; border: 1px solid #ccc; border-radius: 5px; resize: none; } .controls { display: flex; justify-content: center; align-items: center; margin-top: 20px; } .language-select { margin-right: 10px; } .btn { background-color: #007bff; color: #fff; border: none; padding: 10px 20px; margin: 5px; border-radius: 5px; cursor: pointer; } const textInput = document.getElementById("textInput"); const languageSelect = document.getElementById("languageSelect"); const speakButton = document.getElementById("speakButton"); speakButton.addEventListener("click", () => { const text = textInput.value.trim(); const selectedLanguage = languageSelect.value; if (text !== "") { responsiveVoice.speak(text, selectedLanguage); } });

Text to PDF Converter free



Text to PDF Converter

Text to PDF Converter

body { font-family: Arial, sans-serif; background-color: #f0f0f0; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; height: 100vh; } .container { text-align: center; background-color: #fff; padding: 20px; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); max-width: 600px; width: 100%; } h1 { color: #007bff; } .text-input { width: 100%; height: 200px; padding: 10px; margin: 10px 0; border: 1px solid #ccc; border-radius: 5px; resize: none; } .btn { background-color: #007bff; color: #fff; border: none; padding: 10px 20px; margin: 5px; border-radius: 5px; cursor: pointer; } .btn:disabled { background-color: #ccc; cursor: not-allowed; } const inputText = document.getElementById("inputText"); const convertButton = document.getElementById("convertButton"); const downloadLink = document.getElementById("downloadLink"); convertButton.addEventListener("click", () => { const text = inputText.value; if (text.trim() !== "") { // Create a new PDF document const doc = new jsPDF(); // Add text to the PDF doc.text(text, 10, 10); // Save the PDF as a blob const pdfBlob = doc.output("blob"); // Create a download link for the PDF const pdfUrl = URL.createObjectURL(pdfBlob); downloadLink.href = pdfUrl; downloadLink.style.display = "block"; // Trigger the download downloadLink.click(); } else { alert("Please enter some text before converting to PDF."); } });

screen recorder



Screen Recorder Tool

Screen Recorder Tool

body { font-family: Arial, sans-serif; background-color: #f0f0f0; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; height: 100vh; } .container { text-align: center; background-color: #fff; padding: 20px; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); max-width: 600px; width: 100%; } h1 { color: #007bff; } .controls { margin-top: 20px; } .btn { background-color: #007bff; color: #fff; border: none; padding: 10px 20px; margin: 5px; border-radius: 5px; cursor: pointer; } .btn:disabled { background-color: #ccc; cursor: not-allowed; } const startRecordingButton = document.getElementById("startRecording"); const stopRecordingButton = document.getElementById("stopRecording"); const recordedVideo = document.getElementById("recordedVideo"); let recorder; startRecordingButton.addEventListener("click", () => { navigator.mediaDevices .getDisplayMedia({ video: true, audio: true }) .then((stream) => { recorder = new RecordRTC(stream, { type: "video", mimeType: "video/webm", bitsPerSecond: 128000, }); recorder.startRecording(); startRecordingButton.disabled = true; stopRecordingButton.disabled = false; }) .catch((error) => console.error("Error accessing screen:", error)); }); stopRecordingButton.addEventListener("click", () => { recorder.stopRecording(() => { const blob = recorder.getBlob(); recordedVideo.src = URL.createObjectURL(blob); recordedVideo.controls = true; startRecordingButton.disabled = false; stopRecordingButton.disabled = true; }); });