{"$schema":"https://toolsly.tools/schemas/tools-catalog-v1.json","site":{"name":"Toolsly","url":"https://toolsly.tools","tagline":"Free Online Tools for Images, PDFs, Videos, Audio & Payments","description":"Free online tools for images, PDFs, videos, audio, text, payments and developer utilities. 300+ in-browser converters, encoders, calculators, lookups and generators. No upload, no sign-up."},"generated":"2026-05-20T23:30:14.299Z","totalCount":311,"converterCount":169,"utilityCount":142,"categories":[{"id":"image","name":"Image","description":"Convert between every common image format — PNG, JPG, WebP, AVIF, GIF, HEIC, SVG and more.","url":"https://toolsly.tools/category/image","count":73},{"id":"document","name":"Document","description":"Convert documents between Markdown, PDF, DOCX, HTML, CSV, JSON, YAML and more.","url":"https://toolsly.tools/category/document","count":49},{"id":"audio","name":"Audio","description":"Convert audio between MP3, WAV, OGG, FLAC, AAC, M4A, OPUS.","url":"https://toolsly.tools/category/audio","count":19},{"id":"video","name":"Video","description":"Convert video between MP4, MKV, WEBM, MOV, AVI — and extract audio or make GIFs.","url":"https://toolsly.tools/category/video","count":17},{"id":"text","name":"Text & Encoding","description":"Encode, decode, format and transform text.","url":"https://toolsly.tools/category/text","count":80},{"id":"diagram","name":"Diagram","description":"Render diagrams from code — Mermaid → SVG, PNG, JPG, PDF.","url":"https://toolsly.tools/category/diagram","count":4},{"id":"color","name":"Color","description":"Color converters, palette generators, gradient builders, WCAG contrast — everything for picking the right hex.","url":"https://toolsly.tools/category/color","count":12},{"id":"dev","name":"Dev","description":"Code formatters, minifiers, beautifiers — HTML, CSS, JS, SQL, XML, YAML.","url":"https://toolsly.tools/category/dev","count":15},{"id":"calc","name":"Calculators","description":"Everyday calculators — BMI, percentage, age, tip, date diff.","url":"https://toolsly.tools/category/calc","count":24},{"id":"payment","name":"Payment & cards","description":"Card-industry utilities — Luhn checks, BIN lookup, EMV TLV decoding, PIN blocks, KCV, ISO 4217 / 3166 / MCC codes.","url":"https://toolsly.tools/category/payment","count":18}],"notes":{"execution":"Tools currently execute client-side in the user's browser (no server upload). A remote MCP server and REST API are planned — when shipped, each tool entry will list its `invocation.api` endpoint.","attribution":"Please link back to https://toolsly.tools when redistributing results or referencing the catalog.","caching":"Cache this catalog for up to 24 hours. New tools are added regularly."},"tools":[{"kind":"converter","slug":"aac-to-mp3","name":"AAC to MP3","description":"Convert AAC or M4A audio to MP3 — free online, no upload.","longDescription":"Re-encode an AAC or M4A file as a variable-bitrate MP3 using LAME. Useful when you have iTunes-style downloads or AAC podcasts that need to play on devices stuck with MP3-only support. Both raw .aac and .m4a (AAC in an MP4 container) are accepted. Conversion runs entirely in your browser via ffmpeg.wasm — nothing is uploaded. Expect a few seconds for a 5-minute song; longer files may take a minute or two.","category":"audio","categoryName":"Audio","keywords":["aac to mp3","convert aac to mp3","aac to mp3 converter","aac to mp3 online","aac to mp3 free","aac to mp3 online free","change aac to mp3","aac mp3 converter","free aac to mp3","online aac to mp3 converter","m4a to mp3"],"url":"https://toolsly.tools/aac-to-mp3","manifestUrl":"https://toolsly.tools/aac-to-mp3/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".aac",".m4a"],"mimeTypes":["audio/aac","audio/mp4","audio/x-m4a"]},"output":{"type":"file","extension":".mp3","mimeType":"audio/mpeg"},"options":[{"type":"select","key":"quality","label":"MP3 quality","defaultValue":"2","choices":[{"value":"0","label":"VBR best (~245 kbps)"},{"value":"2","label":"VBR high (~190 kbps)"},{"value":"4","label":"VBR medium (~165 kbps)"},{"value":"6","label":"VBR low (~115 kbps)"},{"value":"9","label":"VBR lowest (~65 kbps)"}],"help":"Lower numbers = better quality and larger files."}],"invocation":{"webUi":"https://toolsly.tools/aac-to-mp3","api":null}},{"kind":"converter","slug":"aac-to-wav","name":"AAC to WAV","description":"Convert AAC audio (.aac, .m4a) to uncompressed WAV — free online, no upload.","longDescription":"Decode an AAC stream — either a raw .aac file or an .m4a container — and re-encode it as 16-bit PCM WAV (CD quality). WAV is lossless and ideal for editing in a DAW, archival, or any pipeline that expects uncompressed audio. Note that AAC is a lossy format, so the WAV will be a faithful copy of the decoded audio but won't recover information that was discarded during the original AAC encode — you can't get true lossless from a lossy source. The conversion runs entirely in your browser via ffmpeg.wasm.","category":"audio","categoryName":"Audio","keywords":["aac to wav","convert aac to wav","aac to wav converter","aac to wav online","aac to wav free","aac to wav online free","change aac to wav","aac wav converter","free aac to wav","online aac to wav converter","m4a to wav via aac"],"url":"https://toolsly.tools/aac-to-wav","manifestUrl":"https://toolsly.tools/aac-to-wav/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".aac",".m4a"],"mimeTypes":["audio/aac","audio/x-aac","audio/mp4","audio/m4a","audio/x-m4a"]},"output":{"type":"file","extension":".wav","mimeType":"audio/wav"},"options":[],"invocation":{"webUi":"https://toolsly.tools/aac-to-wav","api":null}},{"kind":"converter","slug":"add-background","name":"Add Background","description":"Paint a solid color or padding behind a transparent image — perfect after using Remove Background.","longDescription":"Drop in a PNG (or any image — transparent pixels keep their alpha, opaque pixels are unchanged). Pick a background color and an optional padding amount, and download the composite. Useful right after Remove Background for product photos, profile pictures with a brand color, or screenshots that need a frame. Runs entirely in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["add background","add background to image","add background to photo","image background changer","add color background","image background editor","replace background color","white background generator","add background online","free background tool","composite image","flatten transparent image","image background fill"],"url":"https://toolsly.tools/add-background","manifestUrl":"https://toolsly.tools/add-background/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".webp",".gif"],"mimeTypes":["image/png","image/webp","image/gif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"select","key":"preset","label":"Background color","defaultValue":"white","choices":[{"value":"white","label":"White"},{"value":"black","label":"Black"},{"value":"red","label":"Red"},{"value":"orange","label":"Orange"},{"value":"yellow","label":"Yellow"},{"value":"green","label":"Green"},{"value":"teal","label":"Teal"},{"value":"blue","label":"Blue"},{"value":"indigo","label":"Indigo"},{"value":"purple","label":"Purple"},{"value":"pink","label":"Pink"},{"value":"gray","label":"Gray"},{"value":"light-gray","label":"Light gray"},{"value":"dark-gray","label":"Dark gray"},{"value":"emerald","label":"Emerald"}],"help":"Pick a preset or override with the custom hex below."},{"type":"text","key":"custom","label":"Custom hex (overrides preset if filled)","defaultValue":"","placeholder":"#059669"},{"type":"number","key":"padding","label":"Padding (px)","defaultValue":0,"min":0,"max":500,"step":1,"help":"Adds extra space around the image, filled with the same background color."},{"type":"select","key":"format","label":"Output format","defaultValue":"png","choices":[{"value":"png","label":"PNG (lossless)"},{"value":"jpeg","label":"JPG (smaller)"},{"value":"webp","label":"WebP (smaller, modern)"}]}],"invocation":{"webUi":"https://toolsly.tools/add-background","api":null}},{"kind":"utility","slug":"age-calculator","name":"Age Calculator","description":"Compute your age in years, months, and days from a date of birth — plus total days lived.","longDescription":"Pick a date of birth (and optionally a target date — defaults to today). Returns the age in years/months/days and breakdowns in total days, hours, minutes, and seconds. Runs locally in your browser.","category":"calc","categoryName":"Calculators","keywords":["age calculator","age calculator online","age calculator free","calculate age","how old am i","date of birth calculator","years months days calculator","age in days","age in years","age difference calculator","exact age calculator","online age calculator"],"badge":"Calculator","url":"https://toolsly.tools/age-calculator","manifestUrl":"https://toolsly.tools/age-calculator/tool.json","inputs":[{"type":"text","key":"dob","label":"Date of birth (YYYY-MM-DD)","defaultValue":"2000-01-01","placeholder":"2000-01-01","help":"ISO date format."},{"type":"text","key":"target","label":"Target date (YYYY-MM-DD, blank = today)","defaultValue":"","placeholder":"leave blank for today"}],"outputs":[{"key":"age","label":"Age"},{"key":"totalDays","label":"Total days"},{"key":"totalHours","label":"Total hours"},{"key":"totalMinutes","label":"Total minutes"},{"key":"totalSeconds","label":"Total seconds"},{"key":"nextBirthday","label":"Days until next birthday"}],"invocation":{"webUi":"https://toolsly.tools/age-calculator","api":null}},{"kind":"utility","slug":"analogous-colors","name":"Analogous Colors Generator","description":"Generate an analogous 3-color palette (±30° hue) from any base color — instant, local.","longDescription":"Analogous colors are neighbors on the color wheel — typically within 30° of the base hue. They share a family resemblance and produce calm, harmonious schemes that work well for backgrounds, gradients, and ambient UI. Paste any color and this tool returns the two analogous partners at -30° and +30° in HSL, with hex / RGB / HSL output and inline swatch previews. Everything runs locally; the value never leaves your browser.","category":"color","categoryName":"Color","keywords":["analogous colors","analogous color generator","analogous palette","harmonious palette","color wheel neighbors","30 degree hue palette","soft color palette generator","analogous color scheme","color theory analogous","analogous palette online","analogous palette free","calm palette generator"],"badge":"Palette","url":"https://toolsly.tools/analogous-colors","manifestUrl":"https://toolsly.tools/analogous-colors/tool.json","inputs":[{"type":"text","key":"color","label":"Base color","placeholder":"#3b82f6","defaultValue":"#3b82f6","monospace":true,"help":"Hex, rgb(), hsl(), or a CSS color name."}],"outputs":[{"key":"preview1","label":"Color 1 (−30°)","multiline":true},{"key":"preview2","label":"Color 2 (base)","multiline":true},{"key":"preview3","label":"Color 3 (+30°)","multiline":true},{"key":"color1","label":"Color 1"},{"key":"color2","label":"Color 2"},{"key":"color3","label":"Color 3"},{"key":"list","label":"All three (hex)","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/analogous-colors","api":null}},{"kind":"utility","slug":"aspect-ratio-calculator","name":"Aspect Ratio Calculator","description":"Compute aspect ratios and resize dimensions while preserving the original proportion — 16:9, 4:3, 21:9 and more.","longDescription":"Two modes. Mode 1 — resize while keeping ratio: enter the original width and height plus one new dimension, get the matching dimension that preserves the aspect ratio. Mode 2 — find ratio from dimensions: enter any width and height, get the simplified ratio (e.g. 1920×1080 → 16:9) plus the decimal value. Useful for video aspect ratios (16:9, 21:9), social-media images (1:1, 4:5, 9:16 for Reels/TikTok/Stories), monitor and TV sizing, and responsive design breakpoints. Runs locally in your browser.","category":"calc","categoryName":"Calculators","keywords":["aspect ratio calculator","aspect ratio calculator online","aspect ratio calculator free","ratio calculator","resize while keeping ratio","16:9 calculator","21:9 calculator","screen aspect ratio calculator","image aspect ratio calculator","video aspect ratio calculator","proportional resize calculator","find aspect ratio","width height ratio calculator"],"badge":"Calculator","url":"https://toolsly.tools/aspect-ratio-calculator","manifestUrl":"https://toolsly.tools/aspect-ratio-calculator/tool.json","inputs":[{"type":"select","key":"mode","label":"Mode","defaultValue":"Resize while keeping ratio","choices":[{"value":"Resize while keeping ratio","label":"Resize while keeping ratio"},{"value":"Find ratio from dimensions","label":"Find ratio from dimensions"}]},{"type":"number","key":"originalWidth","label":"Original width (px)","defaultValue":1920,"min":1,"step":1},{"type":"number","key":"originalHeight","label":"Original height (px)","defaultValue":1080,"min":1,"step":1},{"type":"number","key":"newWidth","label":"New width (px) — leave 0 to derive from new height","defaultValue":0,"min":0,"step":1,"help":"Used only in 'Resize while keeping ratio' mode."},{"type":"number","key":"newHeight","label":"New height (px) — leave 0 to derive from new width","defaultValue":0,"min":0,"step":1,"help":"Used only in 'Resize while keeping ratio' mode."}],"outputs":[{"key":"width","label":"Width"},{"key":"height","label":"Height"},{"key":"ratio","label":"Aspect ratio"},{"key":"decimal","label":"Decimal ratio"}],"invocation":{"webUi":"https://toolsly.tools/aspect-ratio-calculator","api":null}},{"kind":"converter","slug":"audio-trimmer","name":"Audio Trimmer","description":"Cut a clip from an audio file — MP3, WAV, OGG, FLAC, M4A, AAC.","longDescription":"Crop the part of an audio file you actually want. Enter a start and end time — either in seconds (\"30\"), MM:SS (\"1:15\"), or HH:MM:SS (\"0:01:15\") — and download just that slice. Leave the end blank to cut from the start through the end of the file, or use \"+30\" to mean \"30 seconds from the start\". By default we copy the audio stream losslessly with no re-encoding, which is instant but cuts on container boundaries — if you need sample-accurate cuts, pick MP3 or WAV in the format dropdown to force a re-encode. Everything runs in your browser via ffmpeg.wasm; the file never leaves your device.","category":"audio","categoryName":"Audio","keywords":["audio trimmer","mp3 cutter","mp3 trimmer online","trim audio online","cut mp3","audio editor online","audio cutter","wav trimmer","trim mp3 online","free mp3 cutter","online audio trimmer","audio clip cutter","mp3 splitter"],"url":"https://toolsly.tools/audio-trimmer","manifestUrl":"https://toolsly.tools/audio-trimmer/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp3",".wav",".ogg",".flac",".m4a",".aac"],"mimeTypes":["audio/mpeg","audio/mp3","audio/wav","audio/x-wav","audio/ogg","audio/flac","audio/x-flac","audio/mp4","audio/x-m4a","audio/aac"]},"output":{"type":"file","extension":".mp3","mimeType":"audio/mpeg"},"options":[{"type":"text","key":"start","label":"Start time","defaultValue":"0","placeholder":"0  or  1:15  or  0:01:15","help":"Seconds, MM:SS or HH:MM:SS. Defaults to the beginning of the file."},{"type":"text","key":"end","label":"End time","defaultValue":"","placeholder":"leave blank for end of file, or +30 for 30s from start","help":"Same format as start. Leave blank to cut through the end. Prefix with \"+\" to mean \"this many seconds after start\" (e.g. \"+30\")."},{"type":"select","key":"format","label":"Output format","defaultValue":"match","choices":[{"value":"match","label":"Match input (fast, lossless cut)"},{"value":"mp3","label":"MP3 (sample-accurate, re-encoded)"},{"value":"wav","label":"WAV (sample-accurate, uncompressed)"}],"help":"Match-input copies the audio stream — fast and lossless, but cut points snap to the nearest frame boundary. Pick MP3 or WAV for precise cuts."}],"invocation":{"webUi":"https://toolsly.tools/audio-trimmer","api":null}},{"kind":"converter","slug":"avi-to-mp3","name":"AVI to MP3","description":"Extract the audio track from an AVI video as an MP3 file — free online.","longDescription":"Pull the audio track out of an AVI file and save it as a high-quality VBR MP3 (around 190 kbps, ffmpeg quality 2). The video stream is discarded — this is the right tool when you want a podcast, lecture, music clip, or voice memo extracted from an older AVI capture, an archived DVD rip, or any legacy video file. The conversion runs locally via ffmpeg.wasm, so your file never leaves your device. AVI containers often hold older codecs (MP3, AC3, or PCM audio) — all decode fine in the browser, but very long or high-resolution sources may still take a while.","category":"video","categoryName":"Video","keywords":["avi to mp3","convert avi to mp3","avi to mp3 converter","avi to mp3 online","avi to mp3 free","online avi to mp3","change avi to mp3","avi mp3 converter","free avi to mp3","online avi to mp3 converter","extract audio from avi","avi audio extractor","avi to mp3 converter online","video to mp3"],"url":"https://toolsly.tools/avi-to-mp3","manifestUrl":"https://toolsly.tools/avi-to-mp3/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".avi"],"mimeTypes":["video/x-msvideo","video/avi"]},"output":{"type":"file","extension":".mp3","mimeType":"audio/mpeg"},"options":[],"invocation":{"webUi":"https://toolsly.tools/avi-to-mp3","api":null}},{"kind":"converter","slug":"avi-to-mp4","name":"AVI to MP4","description":"Convert AVI video to MP4 (H.264 + AAC) — free, runs entirely in your browser.","longDescription":"Re-encode an AVI file — often an older or camcorder-era format — into a modern MP4 with H.264 video and AAC audio. MP4 is supported by every phone, browser, and TV, and produces a much smaller file than the original AVI for the same visual quality. The conversion runs locally via ffmpeg.wasm, so your file never leaves your device. Performance depends on your CPU: expect roughly real-time encoding for short clips (a 5-minute 720p video may take 1–2 minutes). Sources taller than 1080p are automatically downscaled to 1080p so the browser does not run out of memory mid-encode; for best results keep inputs under about 500 MB.","category":"video","categoryName":"Video","keywords":["avi to mp4","convert avi to mp4","avi to mp4 converter","avi to mp4 online","avi to mp4 free","online avi to mp4","change avi to mp4","avi mp4 converter","free avi to mp4","online avi to mp4 converter","avi to h264","encode avi as mp4"],"url":"https://toolsly.tools/avi-to-mp4","manifestUrl":"https://toolsly.tools/avi-to-mp4/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".avi"],"mimeTypes":["video/x-msvideo","video/avi"]},"output":{"type":"file","extension":".mp4","mimeType":"video/mp4"},"options":[{"type":"number","key":"crf","label":"Quality (CRF)","defaultValue":23,"min":18,"max":30,"step":1,"help":"Constant Rate Factor — lower = better quality and larger file. 23 is a sensible default; 18 is visually lossless; 28+ is heavy compression."}],"invocation":{"webUi":"https://toolsly.tools/avi-to-mp4","api":null}},{"kind":"converter","slug":"avif-to-jpg","name":"AVIF to JPG","description":"Convert AVIF images to JPG (JPEG) — universal compatibility, runs in your browser.","longDescription":"Drop in an AVIF file and download a JPG. JPG works everywhere — perfect when AVIF support is missing. Transparent pixels are flattened against the background color you pick. Conversion happens locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["avif to jpg","avif to jpeg","convert avif to jpg","avif to jpg converter","avif to jpg online","avif to jpg free","avif to jpg online free","change avif to jpg","avif jpeg converter","free avif to jpg","online avif to jpg converter"],"url":"https://toolsly.tools/avif-to-jpg","manifestUrl":"https://toolsly.tools/avif-to-jpg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".avif"],"mimeTypes":["image/avif"]},"output":{"type":"file","extension":".jpg","mimeType":"image/jpeg"},"options":[{"type":"number","key":"quality","label":"JPG quality","defaultValue":92,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."},{"type":"select","key":"background","label":"Background (for transparent areas)","defaultValue":"#ffffff","choices":[{"value":"#ffffff","label":"White"},{"value":"#000000","label":"Black"},{"value":"#f3f4f6","label":"Light gray"}],"help":"JPG has no transparency, so transparent pixels get filled with this color."}],"invocation":{"webUi":"https://toolsly.tools/avif-to-jpg","api":null}},{"kind":"converter","slug":"avif-to-png","name":"AVIF to PNG","description":"Convert AVIF images to PNG — universal compatibility, runs in your browser.","longDescription":"Drop in an AVIF file and download a PNG. PNG is supported everywhere and lossless, so transparency is preserved. All modern browsers can decode AVIF natively, so conversion runs entirely in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["avif to png","convert avif to png","avif to png converter","avif to png online","avif to png free","avif to png online free","change avif to png","avif png converter","free avif to png","online avif to png converter"],"url":"https://toolsly.tools/avif-to-png","manifestUrl":"https://toolsly.tools/avif-to-png/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".avif"],"mimeTypes":["image/avif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/avif-to-png","api":null}},{"kind":"converter","slug":"avif-to-webp","name":"AVIF to WebP","description":"Convert AVIF images to WebP — universally supported, runs in your browser.","longDescription":"Drop in an AVIF and download a WebP. WebP is supported by every modern browser and most image tools, making it a safer choice when you need broader compatibility than AVIF currently offers. Transparency is preserved. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["avif to webp","convert avif to webp","avif to webp converter","avif to webp online","avif to webp free","avif to webp online free","change avif to webp","avif webp converter","free avif to webp","online avif to webp converter"],"url":"https://toolsly.tools/avif-to-webp","manifestUrl":"https://toolsly.tools/avif-to-webp/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".avif"],"mimeTypes":["image/avif"]},"output":{"type":"file","extension":".webp","mimeType":"image/webp"},"options":[{"type":"number","key":"quality","label":"WebP quality","defaultValue":90,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."}],"invocation":{"webUi":"https://toolsly.tools/avif-to-webp","api":null}},{"kind":"converter","slug":"barcode-generator","name":"Barcode Generator","description":"Generate a 1D barcode (CODE128, EAN-13, UPC-A, CODE39, ITF-14, MSI, codabar, pharmacode) as a downloadable PNG.","longDescription":"Build a 1D barcode from any text or numeric value and download it as a high-resolution PNG, ready for shipping labels, inventory tags, event tickets, retail SKUs, or product packaging. Supports CODE128 (the everyday workhorse — handles any ASCII), EAN-13 (retail), EAN-8, UPC-A (US retail), CODE39 (industrial / military), ITF-14 (cartons), MSI (warehouse), pharmacode (pharmaceutical), and codabar (libraries, blood banks). Customise bar width, height, foreground and background colours, and whether the value is printed underneath. Rendering happens entirely in your browser via JsBarcode — no upload.","category":"text","categoryName":"Text & Encoding","keywords":["barcode generator","code128 barcode generator","ean13 barcode generator","upc barcode generator","code39 barcode generator","barcode generator png","barcode generator free","barcode online","barcode maker","shipping label barcode","product barcode generator","isbn barcode generator","itf14 barcode generator","msi barcode generator","codabar generator","pharmacode generator","1d barcode online"],"url":"https://toolsly.tools/barcode-generator","manifestUrl":"https://toolsly.tools/barcode-generator/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".txt"],"mimeTypes":["text/plain"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"text","key":"text","label":"Value to encode","defaultValue":"1234567890","placeholder":"Text or digits to encode"},{"type":"select","key":"format","label":"Format","defaultValue":"CODE128","choices":[{"value":"CODE128","label":"CODE128 (any ASCII) — most common"},{"value":"EAN13","label":"EAN-13 (13 digits, retail)"},{"value":"EAN8","label":"EAN-8 (8 digits)"},{"value":"UPC","label":"UPC-A (12 digits, US retail)"},{"value":"CODE39","label":"CODE39 (digits + uppercase + symbols)"},{"value":"ITF14","label":"ITF-14 (14 digits, cartons)"},{"value":"ITF","label":"ITF (interleaved 2-of-5)"},{"value":"MSI","label":"MSI (warehouse)"},{"value":"pharmacode","label":"Pharmacode (3-131070)"},{"value":"codabar","label":"Codabar (libraries, blood banks)"}]},{"type":"number","key":"width","label":"Bar width (px)","defaultValue":2,"min":1,"max":4,"step":1},{"type":"number","key":"height","label":"Bar height (px)","defaultValue":100,"min":30,"max":300,"step":5},{"type":"boolean","key":"displayValue","label":"Print value underneath","defaultValue":true},{"type":"text","key":"background","label":"Background color","defaultValue":"#ffffff","placeholder":"#ffffff"},{"type":"text","key":"lineColor","label":"Bar color","defaultValue":"#000000","placeholder":"#000000"}],"invocation":{"webUi":"https://toolsly.tools/barcode-generator","api":null}},{"kind":"utility","slug":"base-converter","name":"Base Converter (2-36)","description":"Convert a number between any two bases from 2 to 36 — also shows the value in binary, octal, decimal and hex.","longDescription":"A general-purpose number-base converter that handles any radix from 2 (binary) up to 36 (digits 0-9 then letters a-z). Enter a value, the base it's currently in, and the target base. The tool also shows the value in the four standard bases (binary, octal, decimal, hex) for quick reference. Powered by BigInt so arbitrarily large numbers convert without precision loss. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["base converter","number base converter","radix converter","convert number base","base 2 to base 16","any base converter","base 36 converter","base n converter","arbitrary base converter","binary octal decimal hex","base converter online","base converter free","convert between bases"],"badge":"Converter","url":"https://toolsly.tools/base-converter","manifestUrl":"https://toolsly.tools/base-converter/tool.json","inputs":[{"type":"text","key":"value","label":"Value","placeholder":"ff","monospace":true},{"type":"number","key":"fromBase","label":"From base (2-36)","defaultValue":10,"min":2,"max":36,"step":1},{"type":"number","key":"toBase","label":"To base (2-36)","defaultValue":16,"min":2,"max":36,"step":1}],"outputs":[{"key":"result","label":"Result (in target base)"},{"key":"binary","label":"Binary (base 2)"},{"key":"octal","label":"Octal (base 8)"},{"key":"decimal","label":"Decimal (base 10)"},{"key":"hex","label":"Hex (base 16)"}],"invocation":{"webUi":"https://toolsly.tools/base-converter","api":null}},{"kind":"utility","slug":"base32-decode","name":"Base32 Decode","description":"Decode RFC 4648 Base32 (A-Z, 2-7) back to UTF-8 text — case-insensitive, padding optional.","longDescription":"Paste a Base32 string and recover the original UTF-8 text. The decoder accepts the standard RFC 4648 alphabet (A-Z, 2-7), is case-insensitive, and tolerates missing or extra = padding. Invalid characters are reported clearly so you can fix the input. Useful for inspecting TOTP secrets, decoding Base32-encoded identifiers, or debugging anything that used base32-encode. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["base32 decode","base32 decoder","decode base32","base32 to text","base32 to string","rfc 4648 base32 decoder","base32 to utf8","base32 online","base32 free","convert base32 to text","totp secret decoder","base32 decoding tool","decode rfc4648"],"badge":"Decoder","url":"https://toolsly.tools/base32-decode","manifestUrl":"https://toolsly.tools/base32-decode/tool.json","inputs":[{"type":"text","key":"base32","label":"Base32","placeholder":"JBSWY3DPEBLW64TMMQQQ====","multiline":true,"monospace":true,"help":"Case-insensitive. Padding (=) is optional. Whitespace is stripped."}],"outputs":[{"key":"text","label":"Decoded text","multiline":true},{"key":"byteLength","label":"Decoded length (bytes)"}],"invocation":{"webUi":"https://toolsly.tools/base32-decode","api":null}},{"kind":"utility","slug":"base32-encode","name":"Base32 Encode","description":"Encode UTF-8 text to RFC 4648 Base32 — alphabet A-Z and 2-7, with = padding. Useful for TOTP secrets and DNS-safe identifiers.","longDescription":"Convert any UTF-8 string into its Base32 representation using the standard RFC 4648 alphabet (A-Z, 2-7) with = padding. Base32 is widely used for TOTP / 2FA seeds (Google Authenticator, Authy), case-insensitive identifiers, and any context where you need a binary-safe encoding that avoids the I/1/O/0 confusion common in Base64. Encoding happens entirely in your browser — your text never leaves the page.","category":"text","categoryName":"Text & Encoding","keywords":["base32 encode","base32 encoder","text to base32","rfc 4648 base32","encode base32","string to base32","utf8 to base32","base32 online","base32 free","totp secret encoder","base32 converter","base32 encoding tool","convert text to base32"],"badge":"Encoder","url":"https://toolsly.tools/base32-encode","manifestUrl":"https://toolsly.tools/base32-encode/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Hello, world!","multiline":true,"monospace":true,"help":"Encoded as UTF-8 before Base32. Runs locally in your browser."}],"outputs":[{"key":"base32","label":"Base32","multiline":true},{"key":"length","label":"Output length (chars)"},{"key":"byteLength","label":"Input length (bytes)"}],"invocation":{"webUi":"https://toolsly.tools/base32-encode","api":null}},{"kind":"utility","slug":"base64-decode","name":"Base64 Decode","description":"Decode Base64 or URL-safe Base64 strings back to UTF-8 text — runs locally in your browser.","longDescription":"Paste any Base64 or Base64URL string (with or without padding, using either +/ or -_) and get the original UTF-8 text. Whitespace is ignored. Decoding runs entirely in your browser — your data never leaves the page.","category":"text","categoryName":"Text & Encoding","keywords":["base64 decode","base64 decoder","base64 decode online","base64 decode free","base64 to text","convert base64 to text","decode base64","base64 url decode","url safe base64 decode","base64 to utf8","base64 to string","base64 converter","decode base64 online"],"badge":"Decoder","url":"https://toolsly.tools/base64-decode","manifestUrl":"https://toolsly.tools/base64-decode/tool.json","inputs":[{"type":"text","key":"base64","label":"Base64 string","placeholder":"SGVsbG8sIHdvcmxkIQ==","multiline":true,"monospace":true,"help":"Accepts standard or URL-safe Base64. Padding is optional."}],"outputs":[{"key":"text","label":"Decoded text","multiline":true},{"key":"byteLength","label":"Decoded byte length"}],"invocation":{"webUi":"https://toolsly.tools/base64-decode","api":null}},{"kind":"utility","slug":"base64-encode","name":"Base64 Encode","description":"Encode any text to Base64 (and URL-safe Base64) — runs locally in your browser, free and online.","longDescription":"Paste any UTF-8 text and instantly get the standard Base64 encoding plus the URL-safe variant (using - and _, no padding). Encoding happens entirely in your browser — your text is never uploaded. Useful for embedding strings in data URIs, JSON, JWTs, and HTTP headers.","category":"text","categoryName":"Text & Encoding","keywords":["base64 encode","base64 encoder","base64 encode online","base64 encode free","text to base64","convert text to base64","encode base64","base64 converter","base64 url encode","url safe base64","utf8 to base64","string to base64","base64 encoding tool"],"badge":"Encoder","url":"https://toolsly.tools/base64-encode","manifestUrl":"https://toolsly.tools/base64-encode/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Hello, world!","multiline":true,"monospace":true,"help":"Encoded as UTF-8 before Base64. The text stays in your browser."}],"outputs":[{"key":"base64","label":"Base64","multiline":true},{"key":"base64url","label":"Base64URL (URL-safe)","multiline":true},{"key":"length","label":"Output length (chars)"}],"invocation":{"webUi":"https://toolsly.tools/base64-encode","api":null}},{"kind":"converter","slug":"base64-to-image","name":"Base64 to Image","description":"Decode a base64 (or data-URL) string back into the original image file — in your browser.","longDescription":"Drop in a .txt or .b64 file containing either a base64-encoded image or a full data URL (e.g. data:image/png;base64,...). The tool detects the format from the data URL's MIME prefix and reconstructs the original image file. If no MIME prefix is present, it defaults to PNG. Useful for extracting images embedded in HTML, JSON payloads, or API responses. Everything runs locally in your browser.","category":"image","categoryName":"Image","keywords":["base64 to image","decode base64 image","data url to image","base64 to png","base64 to jpg","base64 image decoder","base64 to picture","convert base64 to image","data url decoder","base64 to image online","base64 to image free","extract base64 image"],"url":"https://toolsly.tools/base64-to-image","manifestUrl":"https://toolsly.tools/base64-to-image/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".txt",".b64"],"mimeTypes":["text/plain","application/base64",""]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/base64-to-image","api":null}},{"kind":"utility","slug":"bcrypt-hash","name":"bcrypt Hash Generator & Verifier","description":"Generate a bcrypt hash from a password, or verify a password against an existing bcrypt hash — adjustable cost factor.","longDescription":"Hash a password with bcrypt (the Blowfish-based password hashing function used by everyone from Django to Spring Security) or verify whether a candidate password matches a stored hash. The cost factor (4-15) controls how slow the hash is — every +1 doubles the work, so 10 is a reasonable default for interactive logins while 12-13 is preferred for high-value accounts. The library used is bcryptjs running entirely in your browser — your password is never transmitted.","category":"text","categoryName":"Text & Encoding","keywords":["bcrypt hash generator","bcrypt password hash","bcrypt online","bcrypt hash online","verify bcrypt hash","bcrypt password verifier","bcrypt cost factor","bcrypt rounds","bcrypt encrypt password","bcrypt generator","password hashing online","bcrypt check password","bcrypt $2a $2b","bcryptjs online","bcrypt hash creator"],"badge":"Crypto","url":"https://toolsly.tools/bcrypt-hash","manifestUrl":"https://toolsly.tools/bcrypt-hash/tool.json","inputs":[{"type":"select","key":"mode","label":"Mode","defaultValue":"hash","choices":[{"value":"hash","label":"Hash a password"},{"value":"verify","label":"Verify a password against a hash"}]},{"type":"text","key":"password","label":"Password","defaultValue":"","placeholder":"Plain-text password","monospace":true},{"type":"number","key":"cost","label":"Cost (rounds) — hash mode only","defaultValue":10,"min":4,"max":15,"step":1,"help":"Each +1 doubles the work. 10 is a good default; 12-13 for high-value accounts."},{"type":"text","key":"hashToVerify","label":"Existing hash (verify mode only)","defaultValue":"","placeholder":"$2a$10$… or $2b$… or $2y$…","monospace":true}],"outputs":[{"key":"result","label":"Result"},{"key":"detail","label":"Detail"}],"invocation":{"webUi":"https://toolsly.tools/bcrypt-hash","api":null}},{"kind":"utility","slug":"bin-lookup","name":"BIN / IIN Lookup","description":"Look up a card BIN (Bank Identification Number) to identify scheme, issuer, country and type.","longDescription":"Enter the first 6-8 digits of a PAN — the Issuer Identification Number — and see the scheme, issuing bank, country and card type. Most lookups resolve instantly from a built-in list of ~150 well-known issuers (US/EU/UK/APAC/MENA/LATAM majors plus every processor sandbox BIN); anything not in that list falls back automatically to the public binlist.net API. Only the BIN (first 6-8 digits) is ever queried — never the full card number.","category":"payment","categoryName":"Payment & cards","keywords":["bin lookup","bin lookup online","bin lookup free","iin lookup","card bin lookup","bin to issuer","bin to bank","credit card bin lookup","bin number lookup","bin checker","issuer identification number","bin search tool","binlist"],"badge":"Lookup","url":"https://toolsly.tools/bin-lookup","manifestUrl":"https://toolsly.tools/bin-lookup/tool.json","inputs":[{"type":"text","key":"bin","label":"BIN / first digits of PAN","placeholder":"424242","monospace":true,"help":"Enter 6-8 digits. Spaces and dashes are stripped."}],"outputs":[{"key":"scheme","label":"Scheme"},{"key":"issuer","label":"Issuer"},{"key":"country","label":"Country"},{"key":"type","label":"Card type"},{"key":"matched","label":"Matched prefix"},{"key":"source","label":"Source"}],"invocation":{"webUi":"https://toolsly.tools/bin-lookup","api":null}},{"kind":"utility","slug":"binary-to-decimal","name":"Binary to Decimal","description":"Convert a binary number to decimal — also shows hex and octal. Spaces and underscores ignored.","longDescription":"Paste a binary number (0s and 1s, freely punctuated with spaces or underscores) and get its decimal value plus the hex and octal representations. Powered by BigInt so even very long bit strings convert without precision loss — handy for inspecting flags, registers or protocol fields. Runs entirely in your browser, no network calls.","category":"text","categoryName":"Text & Encoding","keywords":["binary to decimal","bin to dec","convert binary to decimal","binary to decimal converter","binary to decimal online","bin2dec","binary to number","base 2 to base 10","binary to integer","binary decimal hex octal","binary number converter","binary to dec calculator","0b to decimal"],"badge":"Converter","url":"https://toolsly.tools/binary-to-decimal","manifestUrl":"https://toolsly.tools/binary-to-decimal/tool.json","inputs":[{"type":"text","key":"binary","label":"Binary","placeholder":"1101 1110 1010 1101 1011 1110 1110 1111","monospace":true,"help":"Optional 0b prefix. Spaces and underscores ignored."}],"outputs":[{"key":"decimal","label":"Decimal (base 10)"},{"key":"hex","label":"Hex (base 16)"},{"key":"octal","label":"Octal (base 8)"}],"invocation":{"webUi":"https://toolsly.tools/binary-to-decimal","api":null}},{"kind":"utility","slug":"binary-to-hex","name":"Binary to Hex","description":"Convert a binary number to hexadecimal — input is padded to a multiple of 4 bits. Also shows decimal.","longDescription":"Paste a binary number (0s and 1s, freely punctuated with spaces or underscores) and get its hex value. The input is padded on the left to a multiple of 4 so each output digit corresponds to a clean nibble. Decimal value is shown too. Uses BigInt for unlimited input length. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["binary to hex","bin to hex","binary to hexadecimal","convert binary to hex","binary to hex converter","binary to hex online","bin2hex","bits to hex","base 2 to base 16","binary hex decimal","binary to hex calculator","0b to hex","binary nibble to hex"],"badge":"Converter","url":"https://toolsly.tools/binary-to-hex","manifestUrl":"https://toolsly.tools/binary-to-hex/tool.json","inputs":[{"type":"text","key":"binary","label":"Binary","placeholder":"1101 1110 1010 1101","monospace":true,"help":"Spaces and underscores ignored. Input is left-padded to a multiple of 4 bits."}],"outputs":[{"key":"hex","label":"Hex (uppercase, 0x prefix)"},{"key":"hexLower","label":"Hex (lowercase, bare)"},{"key":"decimal","label":"Decimal"}],"invocation":{"webUi":"https://toolsly.tools/binary-to-hex","api":null}},{"kind":"utility","slug":"binary-to-text","name":"Binary to Text","description":"Decode 8-bit binary (groups of 0/1) back to UTF-8 text — space- or comma-separated.","longDescription":"Paste a sequence of 8-bit binary groups (e.g. 01001000 01101001) and decode it back to UTF-8 text. Each group must be exactly 8 bits of 0/1 and may be separated by spaces, newlines or commas. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["binary to text","binary decoder","binary to ascii","binary to string","binary to utf8","decode binary","binary translator","binary to text online","binary to text free","convert binary to text","binary code decoder","8 bit binary decoder","01 to text"],"badge":"Decoder","url":"https://toolsly.tools/binary-to-text","manifestUrl":"https://toolsly.tools/binary-to-text/tool.json","inputs":[{"type":"text","key":"binary","label":"Binary","placeholder":"01001000 01100101 01101100 01101100 01101111","multiline":true,"monospace":true,"help":"Each group must be exactly 8 bits of 0 or 1."}],"outputs":[{"key":"text","label":"Decoded text","multiline":true},{"key":"byteLength","label":"Byte length"}],"invocation":{"webUi":"https://toolsly.tools/binary-to-text","api":null}},{"kind":"utility","slug":"bip39-mnemonic","name":"BIP39 Mnemonic Generator","description":"Generate a BIP39 mnemonic seed phrase (12/15/18/21/24 words) and the corresponding entropy + seed — or convert an existing mnemonic to its seed.","longDescription":"BIP39 is the standard that bitcoin and most other cryptocurrency wallets use to encode random entropy as a human-friendly word list. Pick a word count (12 words = 128 bits of entropy, 24 = 256 bits) and we'll roll fresh randomness via crypto.getRandomValues, derive the BIP39 checksum, and look up the matching words from the English wordlist. The seed (hex) is what wallets actually use to derive HD-wallet master keys (BIP32). You can also paste an existing mnemonic (with an optional passphrase) to compute the seed without generating new entropy. Runs entirely in your browser — your seed phrase never leaves this device.","category":"text","categoryName":"Text & Encoding","keywords":["bip39 mnemonic generator","bip39 seed phrase generator","bitcoin seed phrase generator","crypto wallet recovery phrase","bip39 to seed","bip39 mnemonic online","12 word seed phrase","24 word seed phrase","bip39 entropy","hd wallet seed","ethereum seed phrase","bip32 master seed","metamask seed generator","ledger seed words","bip39 english wordlist"],"badge":"Crypto","url":"https://toolsly.tools/bip39-mnemonic","manifestUrl":"https://toolsly.tools/bip39-mnemonic/tool.json","inputs":[{"type":"select","key":"mode","label":"Mode","defaultValue":"generate","choices":[{"value":"generate","label":"Generate new mnemonic"},{"value":"decode","label":"Mnemonic → seed (decode existing)"}]},{"type":"select","key":"wordCount","label":"Word count (generate only)","defaultValue":"12","choices":[{"value":"12","label":"12 words (128-bit entropy)"},{"value":"15","label":"15 words (160-bit)"},{"value":"18","label":"18 words (192-bit)"},{"value":"21","label":"21 words (224-bit)"},{"value":"24","label":"24 words (256-bit)"}]},{"type":"text","key":"mnemonic","label":"Existing mnemonic (decode mode)","multiline":true,"defaultValue":"","placeholder":"Paste a 12/15/18/21/24-word mnemonic separated by spaces…"},{"type":"text","key":"passphrase","label":"Passphrase (optional)","defaultValue":"","placeholder":"BIP39 passphrase — empty if none"}],"outputs":[{"key":"mnemonic","label":"Mnemonic"},{"key":"entropyHex","label":"Entropy (hex)"},{"key":"seedHex","label":"Seed (hex, 64 bytes)"},{"key":"summary","label":"Summary"}],"invocation":{"webUi":"https://toolsly.tools/bip39-mnemonic","api":null}},{"kind":"utility","slug":"bmi-calculator","name":"BMI Calculator","description":"Compute Body Mass Index from height and weight in either metric or imperial units.","longDescription":"BMI is computed as weight (kg) ÷ height (m)². This tool accepts metric (cm + kg) or imperial (ft + in + lb) inputs and reports the WHO category (underweight, normal, overweight, obese class I/II/III). Runs locally in your browser — your data is never sent anywhere.","category":"calc","categoryName":"Calculators","keywords":["bmi calculator","body mass index calculator","bmi calculator online","bmi calculator free","calculate bmi","bmi formula","metric bmi calculator","imperial bmi calculator","weight calculator","health bmi","bmi check","online bmi"],"badge":"Calculator","url":"https://toolsly.tools/bmi-calculator","manifestUrl":"https://toolsly.tools/bmi-calculator/tool.json","inputs":[{"type":"select","key":"units","label":"Units","defaultValue":"metric","choices":[{"value":"metric","label":"Metric (cm, kg)"},{"value":"imperial","label":"Imperial (in, lb)"}]},{"type":"number","key":"height","label":"Height","defaultValue":175,"min":1,"step":0.1,"help":"Centimeters in metric mode, inches in imperial mode."},{"type":"number","key":"weight","label":"Weight","defaultValue":70,"min":1,"step":0.1,"help":"Kilograms in metric mode, pounds in imperial mode."}],"outputs":[{"key":"bmi","label":"BMI"},{"key":"category","label":"Category"},{"key":"heightMeters","label":"Height (m)"},{"key":"weightKg","label":"Weight (kg)"}],"invocation":{"webUi":"https://toolsly.tools/bmi-calculator","api":null}},{"kind":"converter","slug":"bmp-to-jpg","name":"BMP to JPG","description":"Convert BMP (Windows Bitmap) images to JPG — much smaller files, runs in your browser.","longDescription":"Drop in a BMP and download a JPG. JPG produces dramatically smaller files than uncompressed BMP and is supported by every device and app. BMP files have no alpha channel, so background flattening doesn't change anything for typical BMP sources. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["bmp to jpg","bmp to jpeg","convert bmp to jpg","bmp to jpg converter","bmp to jpg online","bmp to jpg free","bmp to jpg online free","change bmp to jpg","bmp jpg converter","free bmp to jpg","online bmp to jpg converter"],"url":"https://toolsly.tools/bmp-to-jpg","manifestUrl":"https://toolsly.tools/bmp-to-jpg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".bmp"],"mimeTypes":["image/bmp","image/x-ms-bmp"]},"output":{"type":"file","extension":".jpg","mimeType":"image/jpeg"},"options":[{"type":"number","key":"quality","label":"JPG quality","defaultValue":92,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."}],"invocation":{"webUi":"https://toolsly.tools/bmp-to-jpg","api":null}},{"kind":"converter","slug":"bmp-to-png","name":"BMP to PNG","description":"Convert BMP (Windows Bitmap) images to PNG — much smaller files, runs in your browser.","longDescription":"Drop in a BMP file and download a PNG. PNG is lossless and supported everywhere — and it's usually dramatically smaller than the original BMP because BMP is uncompressed. Conversion happens locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["bmp to png","convert bmp to png","bmp to png converter","bmp to png online","bmp to png free","bmp to png online free","change bmp to png","bmp png converter","free bmp to png","online bmp to png converter"],"url":"https://toolsly.tools/bmp-to-png","manifestUrl":"https://toolsly.tools/bmp-to-png/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".bmp"],"mimeTypes":["image/bmp","image/x-bmp","image/x-ms-bmp"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/bmp-to-png","api":null}},{"kind":"converter","slug":"bmp-to-webp","name":"BMP to WebP","description":"Convert BMP (Windows Bitmap) images to WebP — much smaller files, runs in your browser.","longDescription":"Drop in a BMP and download a WebP. WebP gives you 25–50% smaller files than JPG at equivalent quality and is supported by every modern browser. BMP files have no alpha channel, so transparency isn't a concern. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["bmp to webp","convert bmp to webp","bmp to webp converter","bmp to webp online","bmp to webp free","bmp to webp online free","change bmp to webp","bmp webp converter","free bmp to webp","online bmp to webp converter"],"url":"https://toolsly.tools/bmp-to-webp","manifestUrl":"https://toolsly.tools/bmp-to-webp/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".bmp"],"mimeTypes":["image/bmp","image/x-ms-bmp"]},"output":{"type":"file","extension":".webp","mimeType":"image/webp"},"options":[{"type":"number","key":"quality","label":"WebP quality","defaultValue":90,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."}],"invocation":{"webUi":"https://toolsly.tools/bmp-to-webp","api":null}},{"kind":"utility","slug":"bytes-converter","name":"Bytes Converter","description":"Convert between bytes, KB, MB, GB, TB and their binary counterparts KiB, MiB, GiB, TiB.","longDescription":"Storage and networking specs split on whether a 'kilobyte' means 1,000 bytes (decimal/SI, used by drive manufacturers and ISPs) or 1,024 bytes (binary/IEC, used by operating systems). This tool handles both — pick KB/MB/GB/TB for the 1000-based units, or KiB/MiB/GiB/TiB for the 1024-based ones. The conversion table at the bottom shows your value in every common unit so you can spot the difference at a glance. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["bytes to mb","kb to mb","mb to gb","gb to tb","bytes calculator","data unit converter","kib vs kb","mib to mb","gib to gb","binary vs decimal bytes","storage unit converter","file size converter","iec binary prefixes","kilobyte to megabyte"],"badge":"Converter","url":"https://toolsly.tools/bytes-converter","manifestUrl":"https://toolsly.tools/bytes-converter/tool.json","inputs":[{"type":"number","key":"value","label":"Value","defaultValue":1,"step":0.0001,"help":"Amount to convert."},{"type":"select","key":"from","label":"From","defaultValue":"GB","choices":[{"value":"B","label":"B (bytes)"},{"value":"KB","label":"KB (kilobyte, 1000 B)"},{"value":"MB","label":"MB (megabyte, 1000²)"},{"value":"GB","label":"GB (gigabyte, 1000³)"},{"value":"TB","label":"TB (terabyte, 1000⁴)"},{"value":"KiB","label":"KiB (kibibyte, 1024 B)"},{"value":"MiB","label":"MiB (mebibyte, 1024²)"},{"value":"GiB","label":"GiB (gibibyte, 1024³)"},{"value":"TiB","label":"TiB (tebibyte, 1024⁴)"}]},{"type":"select","key":"to","label":"To","defaultValue":"MB","choices":[{"value":"B","label":"B (bytes)"},{"value":"KB","label":"KB (kilobyte, 1000 B)"},{"value":"MB","label":"MB (megabyte, 1000²)"},{"value":"GB","label":"GB (gigabyte, 1000³)"},{"value":"TB","label":"TB (terabyte, 1000⁴)"},{"value":"KiB","label":"KiB (kibibyte, 1024 B)"},{"value":"MiB","label":"MiB (mebibyte, 1024²)"},{"value":"GiB","label":"GiB (gibibyte, 1024³)"},{"value":"TiB","label":"TiB (tebibyte, 1024⁴)"}]}],"outputs":[{"key":"converted","label":"Converted value"},{"key":"bytes","label":"Total bytes"},{"key":"table","label":"All units","multiline":true},{"key":"notes","label":"Notes","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/bytes-converter","api":null}},{"kind":"utility","slug":"caesar-cipher","name":"Caesar Cipher","description":"Encrypt or decrypt text with the classic Caesar shift cipher — choose any shift from -25 to 25.","longDescription":"The Caesar cipher shifts every letter by a fixed number of positions in the alphabet. Pick a positive shift to encrypt and the negative of that shift to decrypt. Case is preserved and non-letter characters pass through unchanged. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["caesar cipher","caesar shift cipher","caesar encoder","caesar decoder","shift cipher","caesar cipher online","caesar cipher free","letter shift cipher","classic cipher","caesar encryption","caesar decryption","alphabet shift","substitution cipher"],"badge":"Cipher","url":"https://toolsly.tools/caesar-cipher","manifestUrl":"https://toolsly.tools/caesar-cipher/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Hello, world!","multiline":true,"monospace":true},{"type":"number","key":"shift","label":"Shift","defaultValue":3,"min":-25,"max":25,"step":1,"help":"Positive to encrypt; negate to decrypt."}],"outputs":[{"key":"result","label":"Result","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/caesar-cipher","api":null}},{"kind":"utility","slug":"card-brand-identifier","name":"Card Brand Identifier","description":"Identify the card scheme (Visa, Mastercard, Amex, Discover, JCB, Diners, UnionPay) from a PAN.","longDescription":"Detects the card brand from the leading BIN digits, reports the matched range, and lists the expected PAN and CVV lengths for that scheme. Useful for client-side payment form validation and for sanity-checking test data. Runs entirely in your browser — the PAN is never transmitted.","category":"payment","categoryName":"Payment & cards","keywords":["card brand identifier","card scheme detector","credit card brand from number","identify card brand","bin to brand","card brand lookup","detect card brand","card type from pan","card brand identifier online","card brand identifier free","card scheme from bin","card issuer brand"],"badge":"Lookup","url":"https://toolsly.tools/card-brand-identifier","manifestUrl":"https://toolsly.tools/card-brand-identifier/tool.json","inputs":[{"type":"text","key":"pan","label":"Card number / PAN","placeholder":"4242 4242 4242 4242","monospace":true,"help":"Spaces and dashes are ignored. The PAN stays in your browser."}],"outputs":[{"key":"brand","label":"Brand"},{"key":"binRange","label":"Matched BIN range"},{"key":"panLength","label":"Expected PAN length"},{"key":"cvvLength","label":"Expected CVV length"}],"invocation":{"webUi":"https://toolsly.tools/card-brand-identifier","api":null}},{"kind":"utility","slug":"card-number-generator","name":"Card Number Generator","description":"Generate Luhn-valid test card numbers (Visa, Mastercard, Amex, Discover, JCB, Diners) — for development only.","longDescription":"Spits out syntactically valid PANs that pass the Luhn check, using the standard prefix and length for each scheme. These are NOT real cards and will not authorise — use them for local development, fixture data, and form validation. Generation happens entirely in your browser.","category":"payment","categoryName":"Payment & cards","keywords":["card number generator","credit card number generator","test card numbers","fake credit card numbers","luhn valid card numbers","visa test number","mastercard test number","amex test number","card number generator online","card number generator free","developer card numbers","test pan generator"],"badge":"Generator","url":"https://toolsly.tools/card-number-generator","manifestUrl":"https://toolsly.tools/card-number-generator/tool.json","inputs":[{"type":"select","key":"brand","label":"Card scheme","defaultValue":"visa","choices":[{"value":"visa","label":"Visa (16 digits)"},{"value":"mastercard","label":"Mastercard (16 digits)"},{"value":"amex","label":"American Express (15 digits)"},{"value":"discover","label":"Discover (16 digits)"},{"value":"jcb","label":"JCB (16 digits)"},{"value":"diners","label":"Diners Club (14 digits)"}]},{"type":"number","key":"count","label":"How many","defaultValue":5,"min":1,"max":20,"step":1,"help":"Between 1 and 20."}],"outputs":[{"key":"cards","label":"Generated PANs","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/card-number-generator","api":null}},{"kind":"utility","slug":"card-pan-formatter","name":"Card PAN Formatter","description":"Format a card number for display — brand-aware grouping plus a masked version safe to show in receipts.","longDescription":"Paste any Primary Account Number (PAN) and get it grouped the way the issuing scheme prints it on the card — 4-4-4-4 for most 16-digit cards, 4-6-5 for American Express, 4-6-4 for 14-digit Diners, and 4-4-4-4-3 for 19-digit cards. The tool also returns a masked variant (first 6 digits, last 4 digits, bullets in between — the PCI-DSS-safe form used on receipts and dashboards), the detected card brand, the digit count and a Luhn mod-10 verdict. Useful for product engineers building payment dashboards, customer-service agents reading card numbers aloud, and developers formatting saved-card lists. Runs entirely in your browser — your data is never sent anywhere.","category":"payment","categoryName":"Payment & cards","keywords":["card number formatter","pan formatter","pan masking","credit card formatter","card number grouping","card number display","pci safe card number","card brand formatter","masked pan","card number pretty print","card number spacing","amex formatting","card number mask"],"badge":"Formatter","url":"https://toolsly.tools/card-pan-formatter","manifestUrl":"https://toolsly.tools/card-pan-formatter/tool.json","inputs":[{"type":"text","key":"pan","label":"Card number / PAN","placeholder":"4242 4242 4242 4242","monospace":true,"help":"Spaces and dashes are ignored. The PAN stays in your browser."}],"outputs":[{"key":"brand","label":"Brand"},{"key":"formatted","label":"Formatted"},{"key":"masked","label":"Masked"},{"key":"length","label":"Length"},{"key":"luhnValid","label":"Luhn valid"}],"invocation":{"webUi":"https://toolsly.tools/card-pan-formatter","api":null}},{"kind":"utility","slug":"character-counter","name":"Character Counter","description":"Count characters in any text — with and without spaces — plus words, lines and paragraphs. Free, online, runs in your browser.","longDescription":"Paste any text and instantly see the exact character count (with and without spaces), word count, line count and paragraph count. Useful for fitting into character limits — Twitter/X posts (280), Bluesky (300), LinkedIn headlines (220), Instagram captions (2,200), SMS (160), SEO meta titles (60) and descriptions (160). Counting runs entirely in your browser — your text never leaves this page.","category":"text","categoryName":"Text & Encoding","keywords":["character counter","character count","character counter online","character counter free","letter counter","text length counter","count characters in text","character count tool","online character counter","free character counter","char counter","character counter no signup","twitter character counter"],"badge":"Counter","url":"https://toolsly.tools/character-counter","manifestUrl":"https://toolsly.tools/character-counter/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Paste your text here…","multiline":true}],"outputs":[{"key":"characters","label":"Characters (with spaces)"},{"key":"charactersNoSpace","label":"Characters (no spaces)"},{"key":"words","label":"Words"},{"key":"lines","label":"Lines"},{"key":"paragraphs","label":"Paragraphs"}],"invocation":{"webUi":"https://toolsly.tools/character-counter","api":null}},{"kind":"converter","slug":"code-to-image","name":"Code to Image","description":"Render a code snippet as a beautiful PNG screenshot — themes, padding, window controls.","longDescription":"Drop in a source file — JavaScript, TypeScript, Python, HTML, CSS, JSON, Markdown, Rust, Go, Java, C#, or any plain-text file — and download a polished PNG of the snippet, the way you'd want to share it on Twitter, in a blog post or in a slide. Pick a theme (Dark, Light, Solarized, Dracula), adjust the padding, optionally show the macOS traffic-light window controls at the top, and the snippet gets a minimal syntax highlight pass (strings, keywords, numbers, comments — no full language server, just the obvious tokens). Rendering runs locally in your browser using html2canvas-pro; nothing is uploaded. Best for short snippets — very long files produce very tall images.","category":"image","categoryName":"Image","keywords":["code to image","carbon online","code screenshot","snippet to image","render code as image","beautiful code screenshots","code to png","code image generator","snippet screenshot generator","code to picture","carbon now alternative","share code as image","code snippet to image"],"url":"https://toolsly.tools/code-to-image","manifestUrl":"https://toolsly.tools/code-to-image/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".txt",".js",".ts",".jsx",".tsx",".py",".html",".css",".json",".md",".rs",".go",".java",".cs"],"mimeTypes":["text/plain",""]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"select","key":"theme","label":"Theme","defaultValue":"dark","choices":[{"value":"dark","label":"Dark"},{"value":"light","label":"Light"},{"value":"solarized","label":"Solarized"},{"value":"dracula","label":"Dracula"}]},{"type":"select","key":"language","label":"Language","defaultValue":"plain","choices":[{"value":"plain","label":"Plain text"},{"value":"javascript","label":"JavaScript"},{"value":"typescript","label":"TypeScript"},{"value":"python","label":"Python"},{"value":"html","label":"HTML"},{"value":"css","label":"CSS"},{"value":"json","label":"JSON"},{"value":"markdown","label":"Markdown"},{"value":"rust","label":"Rust"},{"value":"go","label":"Go"},{"value":"java","label":"Java"},{"value":"csharp","label":"C#"}],"help":"Used for the basic syntax highlight (strings, keywords, numbers, comments)."},{"type":"number","key":"padding","label":"Padding (px)","defaultValue":32,"min":0,"max":100,"step":4},{"type":"boolean","key":"windowControls","label":"Show macOS window controls","defaultValue":true}],"invocation":{"webUi":"https://toolsly.tools/code-to-image","api":null}},{"kind":"utility","slug":"coin-flip","name":"Coin Flip","description":"Flip a virtual coin once or hundreds of times — cryptographically random, fair 50/50 odds.","longDescription":"A digital coin flip backed by crypto.getRandomValues — true 50/50, no bias, no funny business. Flip once for a quick decision, or up to 100 times in a row to see the distribution (and remember: a 70/30 split across 10 flips is completely normal — coins don't owe you balance). Pick the 'Yes/No' or 'True/False' variants for a clearer answer when you can't remember which side meant what. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["flip a coin","coin flip","heads or tails","coin flipper online","random coin flip","virtual coin","online coin toss","coin toss","yes or no flip","true or false flip","fair coin","decision maker","random decision","coin flip generator"],"badge":"Random","url":"https://toolsly.tools/coin-flip","manifestUrl":"https://toolsly.tools/coin-flip/tool.json","inputs":[{"type":"number","key":"count","label":"Number of flips","defaultValue":1,"min":1,"max":100,"step":1},{"type":"select","key":"coin","label":"Coin type","defaultValue":"standard","choices":[{"value":"standard","label":"Standard (heads/tails)"},{"value":"yesno","label":"Yes/no"},{"value":"truefalse","label":"True/false"}]}],"outputs":[{"key":"result","label":"Result"},{"key":"results","label":"All flips","multiline":true},{"key":"headsCount","label":"Heads / Yes / True"},{"key":"tailsCount","label":"Tails / No / False"},{"key":"headsPercent","label":"Heads / Yes / True %"}],"invocation":{"webUi":"https://toolsly.tools/coin-flip","api":null}},{"kind":"utility","slug":"color-converter","name":"Color Converter","description":"Convert any color (hex, rgb, hsl, hsv, named) to every common format at once — runs locally in your browser.","longDescription":"Paste a color in ANY common format — hex (`#RRGGBB`, `#RGB`, or `#RRGGBBAA` with alpha), `rgb()/rgba()`, `hsl()/hsla()`, `hsv()`, or a standard CSS named color (one of the 148) — and instantly see it rendered in every format: hex, RGB, HSL, HSV, CMYK, CIE XYZ (D65), plus the closest CSS color name. A monospace block preview shows the swatch right in the page. Everything is computed locally; the value never leaves your browser. Algorithm: sRGB normalization → HSL/HSV via standard piecewise transforms → CMYK via K = 1 − max(R,G,B). XYZ uses the sRGB D65 matrix.","category":"color","categoryName":"Color","keywords":["color converter","color converter online","color converter free","hex to rgb","rgb to hex","hex to hsl","rgb to hsl","hsl to rgb","hex to cmyk","hsv converter","color format converter","css color converter","color picker converter"],"badge":"Converter","url":"https://toolsly.tools/color-converter","manifestUrl":"https://toolsly.tools/color-converter/tool.json","inputs":[{"type":"text","key":"color","label":"Color","placeholder":"#3b82f6  or  rgb(59, 130, 246)  or  cornflowerblue","defaultValue":"#3b82f6","monospace":true,"help":"Hex (#RRGGBB or #RRGGBBAA), rgb(), rgba(), hsl(), hsla(), hsv(), or a CSS named color."}],"outputs":[{"key":"preview","label":"Preview","multiline":true},{"key":"hex","label":"Hex"},{"key":"hexAlpha","label":"Hex (with alpha)"},{"key":"rgb","label":"RGB"},{"key":"rgba","label":"RGBA"},{"key":"hsl","label":"HSL"},{"key":"hsla","label":"HSLA"},{"key":"hsv","label":"HSV"},{"key":"cmyk","label":"CMYK"},{"key":"xyz","label":"CIE XYZ (D65)"},{"key":"cssName","label":"Closest CSS name"}],"invocation":{"webUi":"https://toolsly.tools/color-converter","api":null}},{"kind":"utility","slug":"color-name-finder","name":"Color Name Finder","description":"Find the closest standard CSS named color (out of 148) for any hex / rgb / hsl input.","longDescription":"Given any hex, RGB, or HSL color, find the closest CSS named color out of the standard 148-color list. Useful for describing colors in plain English, picking sensible Tailwind-adjacent names, or auditing whether a custom color is already close to a CSS keyword. The distance metric is Euclidean in RGB space — a cheap approximation of perceptual delta-E that's plenty accurate for matching at this granularity. The full 148-color list is bundled inline; no external lookup needed. Returns the top 5 candidates so you can pick the best fit.","category":"color","categoryName":"Color","keywords":["color name finder","closest color name","css color name lookup","hex to color name","rgb to color name","named color finder","color name picker","what color is this hex","find color name","color name converter","css named colors list","color naming tool"],"badge":"Lookup","url":"https://toolsly.tools/color-name-finder","manifestUrl":"https://toolsly.tools/color-name-finder/tool.json","inputs":[{"type":"text","key":"color","label":"Color","placeholder":"#3b82f6","defaultValue":"#3b82f6","monospace":true,"help":"Hex, rgb(), hsl(), or a CSS color name (returns itself if exact)."}],"outputs":[{"key":"preview","label":"Input preview","multiline":true},{"key":"name","label":"Closest CSS name"},{"key":"nameHex","label":"Closest CSS hex"},{"key":"delta","label":"Distance (RGB Euclidean)"},{"key":"candidates","label":"Top 5 candidates","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/color-name-finder","api":null}},{"kind":"converter","slug":"colors-from-image","name":"Colors from Image","description":"Extract the dominant color palette from any image — hex, RGB and HSL codes plus pixel percentages.","longDescription":"Drop in a photo or screenshot and get its dominant color palette. We downsample to ~400×400, ignore transparent pixels, run median-cut quantization (via gifenc), then sort by pixel frequency. Each color is reported in hex, RGB and HSL with the share of the image it covers. Useful for picking brand colors from a mood board, sampling a hero image for a theme, or generating consistent design tokens from photography. Runs entirely in your browser — your image never leaves your device.","category":"image","categoryName":"Image","keywords":["colors from image","color picker from image","color palette from image","image color extractor","dominant colors extractor","extract colors from photo","palette generator from image","image to color palette","find colors in image","image hex color extractor","color analyzer","photo to palette","brand color extractor"],"url":"https://toolsly.tools/colors-from-image","manifestUrl":"https://toolsly.tools/colors-from-image/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp",".avif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/avif"]},"output":{"type":"file","extension":".txt","mimeType":"text/plain"},"options":[{"type":"number","key":"count","label":"Number of colors","defaultValue":6,"min":2,"max":16,"step":1,"help":"How many dominant colors to extract from the image."},{"type":"select","key":"ignoreAlpha","label":"Transparent pixels","defaultValue":"ignore","choices":[{"value":"ignore","label":"Ignore (recommended)"},{"value":"include","label":"Include in palette"}]}],"invocation":{"webUi":"https://toolsly.tools/colors-from-image","api":null}},{"kind":"utility","slug":"complementary-color","name":"Complementary Color Generator","description":"Find the complementary (opposite) color for any hex / rgb / hsl input — instant, free, no upload.","longDescription":"The complementary color is the one diametrically opposite on the HSL color wheel — exactly 180° away. Paste any color (hex `#RRGGBB`, `rgb()`, `hsl()`, or a CSS name) and this tool converts to HSL, rotates the hue by 180°, and converts back to RGB/hex. Complementary pairs offer the highest visual contrast and are a classic choice for accent buttons, headlines on backgrounds, or eye-catching call-to-actions. Runs entirely in your browser — your color never leaves the page.","category":"color","categoryName":"Color","keywords":["complementary color","complementary color generator","opposite color","color wheel","complementary hex","complementary rgb","complementary hsl","color theory tool","color contrast pair","complementary color online","complementary color free","color flip 180"],"badge":"Palette","url":"https://toolsly.tools/complementary-color","manifestUrl":"https://toolsly.tools/complementary-color/tool.json","inputs":[{"type":"text","key":"color","label":"Base color","placeholder":"#3b82f6","defaultValue":"#3b82f6","monospace":true,"help":"Hex, rgb(), hsl(), or a CSS color name."}],"outputs":[{"key":"preview","label":"Base preview","multiline":true},{"key":"compPreview","label":"Complement preview","multiline":true},{"key":"baseHex","label":"Base — Hex"},{"key":"baseRgb","label":"Base — RGB"},{"key":"baseHsl","label":"Base — HSL"},{"key":"compHex","label":"Complement — Hex"},{"key":"compRgb","label":"Complement — RGB"},{"key":"compHsl","label":"Complement — HSL"}],"invocation":{"webUi":"https://toolsly.tools/complementary-color","api":null}},{"kind":"utility","slug":"compound-interest-calculator","name":"Compound Interest Calculator","description":"Project savings/investment growth with compound interest — set principal, annual rate, years, compounding frequency and optional monthly contribution.","longDescription":"Find out what your money turns into over time. Set the starting principal, annual interest rate, years, compounding frequency (annually, semi-annually, quarterly, monthly, daily, or continuously) and an optional monthly contribution. We compute the final balance with the standard compound-interest formula `A = P(1+r/n)^(nt)` plus the annuity-style addition for periodic contributions. The output includes total contributions, total interest earned, and a year-by-year balance breakdown.","category":"calc","categoryName":"Calculators","keywords":["compound interest calculator","compound interest calculator online","savings calculator compound interest","investment growth calculator","compound interest with monthly contributions","compound interest daily monthly yearly","future value calculator","savings projection","compound interest formula calculator","continuous compounding calculator","retirement savings calculator","wealth growth calculator","compound interest annuity","earnings on investment calculator","compound interest with deposits"],"badge":"Calculator","url":"https://toolsly.tools/compound-interest-calculator","manifestUrl":"https://toolsly.tools/compound-interest-calculator/tool.json","inputs":[{"type":"number","key":"principal","label":"Starting principal","defaultValue":10000,"min":0,"step":100},{"type":"number","key":"annualRate","label":"Annual interest rate (%)","defaultValue":7,"min":0,"max":100,"step":0.1},{"type":"number","key":"years","label":"Years","defaultValue":10,"min":0,"max":100,"step":1},{"type":"select","key":"compoundingFrequency","label":"Compounding frequency","defaultValue":"monthly","choices":[{"value":"annually","label":"Annually"},{"value":"semi-annually","label":"Semi-annually"},{"value":"quarterly","label":"Quarterly"},{"value":"monthly","label":"Monthly"},{"value":"daily","label":"Daily"},{"value":"continuously","label":"Continuously"}]},{"type":"number","key":"monthlyContribution","label":"Monthly contribution","defaultValue":0,"min":0,"step":50}],"outputs":[{"key":"finalBalance","label":"Final balance"},{"key":"totalContributions","label":"Total contributions"},{"key":"totalInterest","label":"Total interest earned"},{"key":"effectiveAnnualRate","label":"Effective annual rate"},{"key":"breakdown","label":"Year-by-year breakdown","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/compound-interest-calculator","api":null}},{"kind":"utility","slug":"countdown-timer","name":"Countdown Timer (Time Until)","description":"Calculate how much time until a date — days, hours, minutes, seconds. Heads up: it's a calculator, not a live ticking countdown.","longDescription":"Enter a target date or date-time and get the exact time remaining: days/hours/minutes/seconds breakdown plus totals in each unit. Accepts \"YYYY-MM-DD\", \"YYYY-MM-DD HH:MM\", or full ISO-8601 strings with timezone. If the target is in the past, the result is negative (time since). This is a one-shot calculator — for a live ticking countdown that updates every second, you'll want a different tool or your phone's timer app. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["countdown timer","time until","days until","how many days until","countdown calculator","time remaining","time to date","time until date","weeks until","hours until","date countdown","deadline calculator","until christmas","until new year"],"badge":"Calculator","url":"https://toolsly.tools/countdown-timer","manifestUrl":"https://toolsly.tools/countdown-timer/tool.json","inputs":[{"type":"text","key":"target","label":"Target time","defaultValue":"2026-12-31 23:59","placeholder":"YYYY-MM-DD HH:MM","help":"e.g. 2026-12-25, or 2026-12-31 23:59"},{"type":"text","key":"now","label":"From","defaultValue":"now","placeholder":"Default \"now\"","help":"Use \"now\" for the current instant, or a specific date."}],"outputs":[{"key":"daysHoursMinutes","label":"Time remaining"},{"key":"totalDays","label":"In days"},{"key":"totalHours","label":"In hours"},{"key":"totalMinutes","label":"In minutes"},{"key":"totalSeconds","label":"In seconds"},{"key":"iso","label":"Target (ISO)"}],"invocation":{"webUi":"https://toolsly.tools/countdown-timer","api":null}},{"kind":"utility","slug":"cron-generator","name":"Cron Expression Generator","description":"Build a cron expression from fields or pick a preset — get the expression plus a human-readable description.","longDescription":"Construct a 5-field cron expression (minute hour day-of-month month day-of-week) by editing each field or picking a preset like 'every hour', 'daily at midnight', 'weekdays at 9 AM'. The human-readable description is generated by cronstrue so you can sanity-check what you've built before pasting it into crontab, GitHub Actions, Vercel Cron, or Kubernetes CronJob. The inverse tool — explain an existing cron — is our `crontab-explainer`.","category":"text","categoryName":"Text & Encoding","keywords":["cron expression generator","cron generator online","build cron expression","cron schedule builder","cron syntax helper","crontab generator","github actions cron","vercel cron expression","kubernetes cronjob schedule","cron every minute","cron daily at","cron weekly schedule","cron expression creator","cron preset library","cronstrue online"],"badge":"Generator","url":"https://toolsly.tools/cron-generator","manifestUrl":"https://toolsly.tools/cron-generator/tool.json","inputs":[{"type":"select","key":"preset","label":"Preset","defaultValue":"custom","choices":[{"value":"custom","label":"Custom (use the fields below)"},{"value":"every-minute","label":"Every minute"},{"value":"every-15-min","label":"Every 15 minutes"},{"value":"every-30-min","label":"Every 30 minutes"},{"value":"every-hour","label":"Every hour (on :00)"},{"value":"daily-midnight","label":"Every day at midnight"},{"value":"daily-9am","label":"Every day at 9 AM"},{"value":"weekday-9am","label":"Weekdays at 9 AM"},{"value":"weekly-monday","label":"Every Monday at midnight"},{"value":"monthly-1st","label":"1st of every month at midnight"},{"value":"yearly","label":"Every Jan 1 at midnight"}]},{"type":"text","key":"minute","label":"Minute (0-59)","defaultValue":"*","placeholder":"* or 0,15,30,45 or */5","monospace":true},{"type":"text","key":"hour","label":"Hour (0-23)","defaultValue":"*","placeholder":"* or 9 or 9-17 or */2","monospace":true},{"type":"text","key":"dayOfMonth","label":"Day of month (1-31)","defaultValue":"*","placeholder":"* or 1 or 1,15","monospace":true},{"type":"text","key":"month","label":"Month (1-12 or JAN-DEC)","defaultValue":"*","placeholder":"* or 1 or JAN-MAR","monospace":true},{"type":"text","key":"dayOfWeek","label":"Day of week (0-6, 0=Sun, or SUN-SAT)","defaultValue":"*","placeholder":"* or 1-5 or MON-FRI","monospace":true}],"outputs":[{"key":"expression","label":"Cron expression"},{"key":"humanReadable","label":"Human-readable"},{"key":"fieldBreakdown","label":"Field breakdown","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/cron-generator","api":null}},{"kind":"utility","slug":"crontab-explainer","name":"Crontab Explainer","description":"Explain a cron expression in plain English and show the next firing times.","longDescription":"Paste any 5-field cron expression and get a plain-English description plus the next 5 times it will fire (computed in your local timezone). Powered by the cronstrue library for the description and a small hand-rolled scheduler for next-run times. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["crontab explainer","cron expression explainer","cron parser","cron decoder","cron to english","cron schedule explainer","cron next run","cron validator","cron online","cron free","crontab parser","cron job tester","cron expression viewer"],"badge":"Explainer","url":"https://toolsly.tools/crontab-explainer","manifestUrl":"https://toolsly.tools/crontab-explainer/tool.json","inputs":[{"type":"text","key":"expression","label":"Cron expression","placeholder":"*/5 * * * *","monospace":true,"help":"Standard 5-field cron: minute hour day-of-month month day-of-week."}],"outputs":[{"key":"english","label":"Plain English"},{"key":"nextRun","label":"Next 5 runs (local ISO)","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/crontab-explainer","api":null}},{"kind":"utility","slug":"css-beautifier","name":"CSS Beautifier","description":"Pretty-print CSS — choose 2-space, 4-space or tab indentation for readable stylesheets.","longDescription":"Paste minified or messy CSS and reformat it with consistent indentation, one declaration per line and tidy braces. Pick 2 spaces, 4 spaces or tabs to match your project style. Powered by js-beautify's css_beautify. Runs entirely in your browser — your stylesheet never leaves this page.","category":"dev","categoryName":"Dev","keywords":["css beautifier","css beautifier online","css formatter","format css online","pretty print css","css prettifier","css indent","beautify css","css formatter free","online css beautifier","css pretty print online","reformat css"],"badge":"Beautifier","url":"https://toolsly.tools/css-beautifier","manifestUrl":"https://toolsly.tools/css-beautifier/tool.json","inputs":[{"type":"text","key":"css","label":"CSS","placeholder":".btn{padding:8px 16px;color:#fff;}","multiline":true,"monospace":true},{"type":"select","key":"indent","label":"Indent","defaultValue":"2","choices":[{"value":"2","label":"2 spaces"},{"value":"4","label":"4 spaces"},{"value":"tab","label":"Tabs"}]}],"outputs":[{"key":"formatted","label":"Formatted CSS","multiline":true},{"key":"originalSize","label":"Original size (chars)"},{"key":"formattedSize","label":"Formatted size (chars)"}],"invocation":{"webUi":"https://toolsly.tools/css-beautifier","api":null}},{"kind":"utility","slug":"css-minifier","name":"CSS Minifier","description":"Minify CSS — strip whitespace, comments and unused syntax to ship smaller stylesheets.","longDescription":"Paste any CSS and get a single-line, minified version that's safe to drop into production. Comments, redundant whitespace and unnecessary semicolons are stripped; important comments (/*! … */) are preserved. The savings in characters and percent are reported. Runs entirely in your browser — your stylesheet never leaves this page.","category":"dev","categoryName":"Dev","keywords":["css minifier","css minifier online","minify css","minify css online","compress css","css compressor","css optimizer","shrink css","css minify free","online css minifier","css minify tool","reduce css size"],"badge":"Minifier","url":"https://toolsly.tools/css-minifier","manifestUrl":"https://toolsly.tools/css-minifier/tool.json","inputs":[{"type":"text","key":"css","label":"CSS","placeholder":".btn { padding: 8px 16px; color: #fff; }","multiline":true,"monospace":true}],"outputs":[{"key":"minified","label":"Minified CSS","multiline":true},{"key":"originalSize","label":"Original size (chars)"},{"key":"minifiedSize","label":"Minified size (chars)"},{"key":"savings","label":"Saved"}],"invocation":{"webUi":"https://toolsly.tools/css-minifier","api":null}},{"kind":"converter","slug":"csv-to-html","name":"CSV to HTML Table","description":"Convert a CSV spreadsheet into a styled HTML table — free online, no upload.","longDescription":"Drop in a .csv file (or paste the data) and download a complete .html document containing a styled `<table>`. With the header option on (default), the first row becomes a `<thead>` with `<th>` cells; with it off, all rows are body cells. Delimiters (comma, tab, semicolon, pipe) are auto-detected. The output is a single self-contained file with inline styles. Conversion runs entirely in your browser.","category":"document","categoryName":"Document","keywords":["csv to html","csv to html table","convert csv to html","csv to html converter","csv to table","csv to html online","csv to html free","csv table generator","spreadsheet to html","csv to html online free","online csv to html converter","csv html converter"],"url":"https://toolsly.tools/csv-to-html","manifestUrl":"https://toolsly.tools/csv-to-html/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".csv",".tsv"],"mimeTypes":["text/csv","text/tab-separated-values","text/plain",""]},"output":{"type":"file","extension":".html","mimeType":"text/html"},"options":[{"type":"boolean","key":"header","label":"First row is a header","defaultValue":true,"help":"When on, the first row is rendered as a <thead> with <th> cells."}],"invocation":{"webUi":"https://toolsly.tools/csv-to-html","api":null}},{"kind":"converter","slug":"csv-to-json","name":"CSV to JSON","description":"Convert CSV files to pretty-printed JSON — free online, no upload.","longDescription":"Drop in a .csv file and download a JSON document. With the header option on (default), each row becomes an object keyed by the column names from the first row; with it off, each row becomes an array of strings. Delimiters (comma, tab, semicolon, pipe) are auto-detected. The output is pretty-printed with 2-space indentation. Runs entirely in your browser — your file never leaves your device.","category":"document","categoryName":"Document","keywords":["csv to json","convert csv to json","csv to json converter","csv to json online","csv to json free","change csv to json","csv json converter","free csv to json","online csv to json converter","csv to json online free","tsv to json","spreadsheet to json"],"url":"https://toolsly.tools/csv-to-json","manifestUrl":"https://toolsly.tools/csv-to-json/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".csv",".tsv"],"mimeTypes":["text/csv","text/tab-separated-values","text/plain",""]},"output":{"type":"file","extension":".json","mimeType":"application/json"},"options":[{"type":"boolean","key":"header","label":"First row is a header","defaultValue":true,"help":"When on, each row becomes a keyed object. When off, rows become arrays."}],"invocation":{"webUi":"https://toolsly.tools/csv-to-json","api":null}},{"kind":"converter","slug":"csv-to-markdown","name":"CSV to Markdown Table","description":"Convert a CSV spreadsheet into a GitHub-flavored Markdown table — free online, no upload.","longDescription":"Drop in a .csv file (or paste the data) and download a `.md` document containing a GitHub-style table with `| col | col |` syntax and the `| --- |` separator row. Pick column alignment (left / center / right). With the header option on (default), the first row becomes the table header; with it off, generic `col1`, `col2`, ... headers are generated so the output is still a valid Markdown table. Conversion runs entirely in your browser.","category":"document","categoryName":"Document","keywords":["csv to markdown","csv to md","csv to markdown table","convert csv to markdown","csv to markdown converter","csv to markdown online","csv to markdown free","csv to github table","csv to md table","spreadsheet to markdown","csv markdown converter","online csv to markdown"],"url":"https://toolsly.tools/csv-to-markdown","manifestUrl":"https://toolsly.tools/csv-to-markdown/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".csv",".tsv"],"mimeTypes":["text/csv","text/tab-separated-values","text/plain",""]},"output":{"type":"file","extension":".md","mimeType":"text/markdown"},"options":[{"type":"boolean","key":"header","label":"First row is a header","defaultValue":true},{"type":"select","key":"alignment","label":"Column alignment","defaultValue":"left","choices":[{"value":"left","label":"Left"},{"value":"center","label":"Center"},{"value":"right","label":"Right"}]}],"invocation":{"webUi":"https://toolsly.tools/csv-to-markdown","api":null}},{"kind":"converter","slug":"csv-to-tsv","name":"CSV to TSV","description":"Convert a comma-separated file to tab-separated (TSV) — free online, no upload.","longDescription":"Drop in a .csv file (or paste the data) and download a tab-separated `.tsv` file. The delimiter in the source is auto-detected by papaparse, and the output always uses real tab characters as separators — handy for pasting into spreadsheets that prefer TSV, or for tools that don't deal well with quoted commas. Conversion runs entirely in your browser.","category":"document","categoryName":"Document","keywords":["csv to tsv","csv to tab separated","convert csv to tsv","csv to tsv converter","csv to tsv online","csv to tsv free","csv comma to tab","tab delimited from csv","csv tsv converter","online csv to tsv","spreadsheet csv to tsv","csv to tsv online free"],"url":"https://toolsly.tools/csv-to-tsv","manifestUrl":"https://toolsly.tools/csv-to-tsv/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".csv"],"mimeTypes":["text/csv","text/plain",""]},"output":{"type":"file","extension":".tsv","mimeType":"text/tab-separated-values"},"options":[],"invocation":{"webUi":"https://toolsly.tools/csv-to-tsv","api":null}},{"kind":"converter","slug":"csv-to-xlsx","name":"CSV to XLSX","description":"Convert a CSV file into an Excel .xlsx workbook — free online, no upload.","longDescription":"Drop in (or paste) a .csv file and download a real Excel .xlsx workbook with one worksheet named \"Sheet1\". Delimiters (comma, tab, semicolon, pipe) are auto-detected. Values are kept as strings unless they parse cleanly as numbers, so leading-zero codes like ZIP codes are preserved. Conversion runs entirely in your browser — your data never leaves your device.","category":"document","categoryName":"Document","keywords":["csv to xlsx","csv to xlsx online","csv to xlsx converter","csv to xlsx free","csv to excel","csv to excel online","csv to excel converter","convert csv to xlsx","convert csv to excel","csv to xls","csv converter","spreadsheet converter"],"url":"https://toolsly.tools/csv-to-xlsx","manifestUrl":"https://toolsly.tools/csv-to-xlsx/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".csv"],"mimeTypes":["text/csv","application/csv","text/plain",""]},"output":{"type":"file","extension":".xlsx","mimeType":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},"options":[],"invocation":{"webUi":"https://toolsly.tools/csv-to-xlsx","api":null}},{"kind":"converter","slug":"csv-to-xml","name":"CSV to XML","description":"Convert a CSV spreadsheet into a well-formed XML document — free online, no upload.","longDescription":"Drop in a .csv file (or paste the data) and download a `.xml` document. Each CSV row becomes a `<row>` element (configurable) wrapped under a `<rows>` root (also configurable); each cell becomes a child element named after its CSV column. With the header option on (default), column names come from the first row; with it off, generic `col1`, `col2`, ... names are used. Conversion runs entirely in your browser.","category":"document","categoryName":"Document","keywords":["csv to xml","csv to xml converter","convert csv to xml","csv to xml online","csv to xml free","csv xml converter","spreadsheet to xml","csv to xml online free","online csv to xml converter","csv file to xml","free csv to xml","csv data to xml"],"url":"https://toolsly.tools/csv-to-xml","manifestUrl":"https://toolsly.tools/csv-to-xml/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".csv",".tsv"],"mimeTypes":["text/csv","text/tab-separated-values","text/plain",""]},"output":{"type":"file","extension":".xml","mimeType":"application/xml"},"options":[{"type":"boolean","key":"header","label":"First row is a header","defaultValue":true},{"type":"select","key":"rootName","label":"Root element name","defaultValue":"rows","choices":[{"value":"rows","label":"rows"},{"value":"root","label":"root"},{"value":"data","label":"data"},{"value":"records","label":"records"},{"value":"items","label":"items"}]},{"type":"select","key":"rowName","label":"Row element name","defaultValue":"row","choices":[{"value":"row","label":"row"},{"value":"item","label":"item"},{"value":"record","label":"record"},{"value":"entry","label":"entry"}]}],"invocation":{"webUi":"https://toolsly.tools/csv-to-xml","api":null}},{"kind":"converter","slug":"csv-to-yaml","name":"CSV to YAML","description":"Convert CSV files to YAML — free online, no upload.","longDescription":"Drop in a .csv file and download a YAML document. With the header option on (default), each row becomes a YAML mapping keyed by the column names; with it off, each row becomes a list of values. The result is a top-level YAML list (one item per row). Runs entirely in your browser — your file never leaves your device.","category":"document","categoryName":"Document","keywords":["csv to yaml","convert csv to yaml","csv to yaml converter","csv to yaml online","csv to yaml free","change csv to yaml","csv yaml converter","free csv to yaml","online csv to yaml converter","csv to yaml online free","csv to yml","spreadsheet to yaml"],"url":"https://toolsly.tools/csv-to-yaml","manifestUrl":"https://toolsly.tools/csv-to-yaml/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".csv",".tsv"],"mimeTypes":["text/csv","text/tab-separated-values","text/plain",""]},"output":{"type":"file","extension":".yaml","mimeType":"text/yaml"},"options":[{"type":"boolean","key":"header","label":"First row is a header","defaultValue":true,"help":"When on, each row becomes a keyed mapping. When off, rows become lists of values."}],"invocation":{"webUi":"https://toolsly.tools/csv-to-yaml","api":null}},{"kind":"utility","slug":"csv-validator","name":"CSV Validator","description":"Validate CSV data — check column consistency, count rows and surface parse errors.","longDescription":"Paste any CSV (or TSV / pipe-separated / semicolon-separated) data and get a structured validity report. The validator counts rows and columns, finds rows whose column count doesn't match the modal count, and surfaces any parser errors with their row number. Auto-detection picks the most likely delimiter, or you can pick one explicitly. Powered by Papa Parse. Runs entirely in your browser — your data never leaves this page.","category":"dev","categoryName":"Dev","keywords":["csv validator","csv validator online","validate csv","csv lint","csv checker","csv error finder","csv column count","csv inconsistent rows","online csv validator","csv validator free","check csv file","tsv validator"],"badge":"Validator","url":"https://toolsly.tools/csv-validator","manifestUrl":"https://toolsly.tools/csv-validator/tool.json","inputs":[{"type":"text","key":"csv","label":"CSV","placeholder":"name,age,city\nAlice,30,NYC\nBob,25,LA","multiline":true,"monospace":true},{"type":"select","key":"delimiter","label":"Delimiter","defaultValue":"auto","choices":[{"value":"auto","label":"Auto-detect"},{"value":",","label":"Comma (,)"},{"value":"\t","label":"Tab"},{"value":";","label":"Semicolon (;)"},{"value":"|","label":"Pipe (|)"}]}],"outputs":[{"key":"valid","label":"Valid"},{"key":"rowCount","label":"Rows"},{"key":"columnCount","label":"Columns (modal)"},{"key":"inconsistentRows","label":"Inconsistent rows","multiline":true},{"key":"errors","label":"Parser errors","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/csv-validator","api":null}},{"kind":"utility","slug":"date-difference","name":"Date Difference Calculator","description":"Compute the difference between two dates in years, months, days, hours, minutes, seconds.","longDescription":"Enter two dates (or date-times) and get the difference broken down every way you might need it: calendar years/months/days, plus totals in days, hours, minutes, seconds, and business days (Mon–Fri). Runs locally in your browser.","category":"calc","categoryName":"Calculators","keywords":["date difference calculator","days between dates","date duration calculator","days between two dates","date diff","calculate date difference","date subtraction","weeks between dates","business days between dates","date calculator online","free date calculator","how many days between"],"badge":"Calculator","url":"https://toolsly.tools/date-difference","manifestUrl":"https://toolsly.tools/date-difference/tool.json","inputs":[{"type":"text","key":"from","label":"From","defaultValue":"2020-01-01","placeholder":"YYYY-MM-DD or YYYY-MM-DDTHH:MM"},{"type":"text","key":"to","label":"To","defaultValue":"2025-01-01","placeholder":"YYYY-MM-DD or YYYY-MM-DDTHH:MM"}],"outputs":[{"key":"ymd","label":"Years / months / days"},{"key":"totalDays","label":"Total days"},{"key":"totalWeeks","label":"Total weeks"},{"key":"totalHours","label":"Total hours"},{"key":"totalMinutes","label":"Total minutes"},{"key":"totalSeconds","label":"Total seconds"},{"key":"businessDays","label":"Business days (Mon–Fri)"}],"invocation":{"webUi":"https://toolsly.tools/date-difference","api":null}},{"kind":"utility","slug":"decimal-to-binary","name":"Decimal to Binary","description":"Convert a decimal integer to binary — also shows hex and octal. Group bits by 4 or 8 for readability.","longDescription":"Type a decimal integer and instantly see the binary representation, with optional grouping into nibbles (4 bits) or bytes (8 bits) for legibility. Hex and octal forms are shown too. Uses BigInt so arbitrarily large values convert without losing precision. Runs locally — your input never leaves your browser.","category":"text","categoryName":"Text & Encoding","keywords":["decimal to binary","dec to bin","convert decimal to binary","decimal to binary converter","decimal to binary online","dec2bin","number to binary","integer to binary","base 10 to base 2","decimal binary hex octal","decimal to binary calculator","decimal to bits","decimal to base 2"],"badge":"Converter","url":"https://toolsly.tools/decimal-to-binary","manifestUrl":"https://toolsly.tools/decimal-to-binary/tool.json","inputs":[{"type":"text","key":"decimal","label":"Decimal","placeholder":"255","monospace":true},{"type":"select","key":"grouping","label":"Bit grouping","defaultValue":"none","choices":[{"value":"none","label":"No grouping (11111111)"},{"value":"4","label":"Group by 4 (1111 1111)"},{"value":"8","label":"Group by 8 (11111111)"}]}],"outputs":[{"key":"binary","label":"Binary (base 2)"},{"key":"bitCount","label":"Bit count"},{"key":"hex","label":"Hex (base 16)"},{"key":"octal","label":"Octal (base 8)"}],"invocation":{"webUi":"https://toolsly.tools/decimal-to-binary","api":null}},{"kind":"utility","slug":"decimal-to-hex","name":"Decimal to Hex","description":"Convert a decimal integer to hexadecimal — also shows binary and octal. Uppercase output with optional 0x prefix.","longDescription":"Type a decimal number (negative numbers accepted, _-grouping allowed) and instantly get its hex value alongside the binary and octal forms. The hex output is uppercase by default — toggle the 0x prefix on or off to suit your downstream code. Uses BigInt internally so values larger than 2^53 work without precision loss. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["decimal to hex","decimal to hexadecimal","dec to hex","convert decimal to hex","decimal to hex converter","decimal to hex online","dec2hex","integer to hex","number to hex","base 10 to hex","decimal to hex calculator","decimal to base 16","decimal hex binary octal"],"badge":"Converter","url":"https://toolsly.tools/decimal-to-hex","manifestUrl":"https://toolsly.tools/decimal-to-hex/tool.json","inputs":[{"type":"text","key":"decimal","label":"Decimal","placeholder":"3735928559","monospace":true,"help":"Underscores and spaces are stripped (so 1_000_000 works)."},{"type":"boolean","key":"prefix","label":"Add 0x prefix to hex output","defaultValue":true}],"outputs":[{"key":"hex","label":"Hex (base 16)"},{"key":"binary","label":"Binary (base 2)"},{"key":"octal","label":"Octal (base 8)"}],"invocation":{"webUi":"https://toolsly.tools/decimal-to-hex","api":null}},{"kind":"utility","slug":"decimal-to-text","name":"Decimal to Text","description":"Decode a list of decimal Unicode code points back to text — any separator (space, comma, newline) accepted.","longDescription":"Paste a sequence of decimal code points (Unicode scalar values) separated by spaces, commas, semicolons, or newlines — the tool strips anything else and reassembles them into the original string. Surrogate-pair-free since each number is converted with String.fromCodePoint, so emoji and supplementary characters work correctly. Runs locally in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["decimal to text","decimal to string","charcode to text","code points to text","decimal to ascii","decimal to unicode","decimal to char","numbers to text","int to char","decimal to text online","code point decoder","ascii codes to text","decimal decoder"],"badge":"Decoder","url":"https://toolsly.tools/decimal-to-text","manifestUrl":"https://toolsly.tools/decimal-to-text/tool.json","inputs":[{"type":"text","key":"codes","label":"Decimal code points","placeholder":"72 101 108 108 111","multiline":true,"monospace":true,"help":"Separate codes with any whitespace, commas, or semicolons."}],"outputs":[{"key":"text","label":"Decoded text","multiline":true},{"key":"count","label":"Character count"}],"invocation":{"webUi":"https://toolsly.tools/decimal-to-text","api":null}},{"kind":"utility","slug":"dice-roller","name":"Dice Roller","description":"Roll d4, d6, d8, d10, d12, d20 or d100 dice — D&D notation like 3d6+2 supported via the modifier field.","longDescription":"A digital dice roller for tabletop RPGs (D&D, Pathfinder, etc.), board games, and quick decisions. Pick how many sides (d4 through d100), how many dice to roll (1–20), and an optional modifier (the +N or -N you'd see in '3d6+2' notation). Each die is rolled independently with crypto.getRandomValues using rejection sampling, so distributions are perfectly uniform — no off-by-one bias. The output shows every individual roll plus the total with and without the modifier. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["dice roller","roll dice online","d20 roller","dnd dice","d6 roller","tabletop dice","rpg dice roller","d&d dice roller","pathfinder dice","virtual dice","online dice","fair dice","random dice","3d6 roller"],"badge":"Random","url":"https://toolsly.tools/dice-roller","manifestUrl":"https://toolsly.tools/dice-roller/tool.json","inputs":[{"type":"select","key":"sides","label":"Sides","defaultValue":"6","choices":[{"value":"4","label":"d4"},{"value":"6","label":"d6"},{"value":"8","label":"d8"},{"value":"10","label":"d10"},{"value":"12","label":"d12"},{"value":"20","label":"d20"},{"value":"100","label":"d100"}]},{"type":"number","key":"count","label":"Number of dice","defaultValue":1,"min":1,"max":20,"step":1},{"type":"number","key":"modifier","label":"Modifier","defaultValue":0,"min":-100,"max":100,"step":1,"help":"Added to the total. Use 2 for '+2', -1 for '-1'."}],"outputs":[{"key":"notation","label":"Notation"},{"key":"rolls","label":"Individual rolls","multiline":true},{"key":"total","label":"Sum of rolls"},{"key":"withModifier","label":"Total with modifier"}],"invocation":{"webUi":"https://toolsly.tools/dice-roller","api":null}},{"kind":"utility","slug":"discount-calculator","name":"Discount Calculator","description":"Compute the sale price after a percent discount — supports stacked discounts and an optional sales-tax / VAT addition.","longDescription":"Drop in a price, a discount percent, optional additional discounts (coupons or staff/promo stacking), and an optional sales-tax / VAT rate. We compute the discounted price, the savings amount, the effective savings percent, and the final price with tax applied to the discounted amount. Stacked discounts apply sequentially — '20% then 10%' is NOT 30%, it's 28% (because the 10% comes off the already-reduced price). Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["discount calculator","percent off calculator","sale price calculator","stacked discount calculator","double discount calculator","coupon stacking calculator","savings calculator","what is x% off","calculate discount percentage","after-tax discount calculator","promo code calculator","shopping calculator","price after discount","effective discount calculator","compound discount"],"badge":"Calculator","url":"https://toolsly.tools/discount-calculator","manifestUrl":"https://toolsly.tools/discount-calculator/tool.json","inputs":[{"type":"number","key":"originalPrice","label":"Original price","defaultValue":100,"min":0,"step":0.01},{"type":"number","key":"discountPercent","label":"Primary discount (%)","defaultValue":20,"min":0,"max":100,"step":0.5},{"type":"text","key":"stackedDiscounts","label":"Stacked discounts (optional)","defaultValue":"","placeholder":"Comma-separated, e.g. '10, 5'","help":"Applied sequentially after the primary discount."},{"type":"number","key":"taxPercent","label":"Tax / VAT (%)","defaultValue":0,"min":0,"max":100,"step":0.5}],"outputs":[{"key":"discountedPrice","label":"Price after discounts"},{"key":"totalSavings","label":"Total savings"},{"key":"savingsPercent","label":"Effective savings"},{"key":"finalPriceWithTax","label":"Final price with tax"},{"key":"breakdown","label":"Step-by-step breakdown","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/discount-calculator","api":null}},{"kind":"converter","slug":"docx-to-html","name":"Word (DOCX) to HTML","description":"Convert a Microsoft Word (.docx) document into a styled HTML page — free online, no upload.","longDescription":"Drop in a Word .docx file and download a self-contained .html document. Mammoth.js maps Word's semantic styles (headings, lists, bold/italic, tables, links) to clean HTML, which is then wrapped in a minimal document shell with print-safe inline styles. Open the result in any browser, attach it to an email, or paste it into a CMS. Conversion runs entirely in your browser — your file never leaves your device.","category":"document","categoryName":"Document","keywords":["docx to html","word to html","convert docx to html","docx to html converter","docx to html online","docx to html free","online docx to html converter","free docx to html","change docx to html","word doc to html","word to webpage","docx html converter"],"url":"https://toolsly.tools/docx-to-html","manifestUrl":"https://toolsly.tools/docx-to-html/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".docx"],"mimeTypes":["application/vnd.openxmlformats-officedocument.wordprocessingml.document",""]},"output":{"type":"file","extension":".html","mimeType":"text/html"},"options":[],"invocation":{"webUi":"https://toolsly.tools/docx-to-html","api":null}},{"kind":"converter","slug":"docx-to-md","name":"Word (DOCX) to Markdown","description":"Convert a Microsoft Word (.docx) document into clean Markdown — free online, no upload.","longDescription":"Drop in a Word .docx file and download a Markdown document. Mammoth.js parses the .docx XML and produces semantic HTML (headings, paragraphs, lists, bold/italic, tables, links, images), which is then converted to Markdown by Toolsly's built-in HTML→MD converter. Tracked changes and complex formatting are flattened to their visible content. Runs entirely in your browser — your file never leaves your device.","category":"document","categoryName":"Document","keywords":["docx to md","docx to markdown","word to markdown","convert docx to markdown","docx to markdown converter","docx to markdown online","docx to markdown free","online docx to markdown converter","free docx to markdown","change docx to md","word doc to markdown","word to md"],"url":"https://toolsly.tools/docx-to-md","manifestUrl":"https://toolsly.tools/docx-to-md/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".docx"],"mimeTypes":["application/vnd.openxmlformats-officedocument.wordprocessingml.document",""]},"output":{"type":"file","extension":".md","mimeType":"text/markdown"},"options":[],"invocation":{"webUi":"https://toolsly.tools/docx-to-md","api":null}},{"kind":"converter","slug":"docx-to-pdf","name":"Word (DOCX) to PDF","description":"Convert a Microsoft Word (.docx) document to a styled PDF — free, online, no upload.","longDescription":"Drop in a Word .docx file and download a PDF that closely matches what Word would print. Mammoth.js parses the .docx XML into semantic HTML, then we render that HTML offscreen, capture it with html2canvas-pro, and embed it into a multi-page jsPDF document — all in your browser. Headings, lists, tables, links, bold/italic, and images all carry through. Conversion runs locally — your file never leaves your device.","category":"document","categoryName":"Document","keywords":["docx to pdf","word to pdf","convert word to pdf","convert docx to pdf","doc to pdf","convert word document to pdf","word document to pdf","docx to pdf converter","word to pdf online","word to pdf free","online docx to pdf","free docx to pdf converter"],"url":"https://toolsly.tools/docx-to-pdf","manifestUrl":"https://toolsly.tools/docx-to-pdf/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".docx"],"mimeTypes":["application/vnd.openxmlformats-officedocument.wordprocessingml.document",""]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"select","key":"pageSize","label":"Page size","defaultValue":"a4","choices":[{"value":"a4","label":"A4"},{"value":"letter","label":"US Letter"},{"value":"legal","label":"US Legal"}]}],"invocation":{"webUi":"https://toolsly.tools/docx-to-pdf","api":null}},{"kind":"converter","slug":"docx-to-txt","name":"Word (DOCX) to Text","description":"Extract the plain text from a Microsoft Word (.docx) document — free online, no upload.","longDescription":"Drop in a Word .docx file and download its raw text content as a .txt file. All formatting, images, tables and styles are stripped — only the readable text remains, with paragraph breaks preserved as newlines. Conversion runs entirely in your browser using mammoth.js; your file never leaves your device.","category":"document","categoryName":"Document","keywords":["docx to txt","docx to text","word to txt","word to text","convert docx to txt","docx to txt converter","docx to txt online","docx to txt free","online docx to text converter","free docx to txt","extract text from docx","word doc to plain text"],"url":"https://toolsly.tools/docx-to-txt","manifestUrl":"https://toolsly.tools/docx-to-txt/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".docx"],"mimeTypes":["application/vnd.openxmlformats-officedocument.wordprocessingml.document",""]},"output":{"type":"file","extension":".txt","mimeType":"text/plain"},"options":[],"invocation":{"webUi":"https://toolsly.tools/docx-to-txt","api":null}},{"kind":"utility","slug":"dukpt-pin-block-calculator","name":"DUKPT PIN Block Calculator","description":"Compute the ISO 8583 field 52 encrypted PIN block from a PIN, PAN, BDK and KSN — full TDES DUKPT key derivation.","longDescription":"Specialist tool for payments engineers. Enter a PIN, the cardholder's PAN, the Base Derivation Key (BDK), and the Key Serial Number (KSN). We run the TDES DUKPT key derivation per ANSI X9.24-1: derive the IPEK from BDK + base-KSN, walk the 21 counter bits MSB→LSB through the non-reversible key generation process to produce the future key, XOR with the PIN-key variant 00…FF00…FF, then 3DES-encrypt the ISO 9564 format-0 PIN block with the resulting per-transaction PIN encryption key. The encrypted PIN block is what goes in ISO 8583 field 52. Every step is shown so you can trace it. Runs entirely in your browser — keys and PANs never leave your device.","category":"payment","categoryName":"Payment & cards","keywords":["dukpt pin block calculator","dukpt calculator","iso 8583 field 52","iso 8583 pin block","encrypted pin block","tdes dukpt","3des dukpt","dukpt key derivation","ksn pin block","ipek calculator","ansi x9.24 dukpt","pin block encryption online","payment terminal pin block"],"badge":"Calculator","url":"https://toolsly.tools/dukpt-pin-block-calculator","manifestUrl":"https://toolsly.tools/dukpt-pin-block-calculator/tool.json","inputs":[{"type":"text","key":"pin","label":"PIN","defaultValue":"1234","placeholder":"4-12 digits","help":"The customer's PIN (4 to 12 digits)."},{"type":"text","key":"pan","label":"PAN","defaultValue":"4111111111111111","placeholder":"13-19 digits","help":"Primary Account Number — used to build the ISO 9564 PIN block."},{"type":"text","key":"bdk","label":"BDK (hex)","defaultValue":"0123456789ABCDEFFEDCBA9876543210","placeholder":"32 hex chars (double-length) or 48 (triple-length)","help":"Base Derivation Key. 32 hex chars for K1‖K2 (double-length 3DES), 48 for K1‖K2‖K3."},{"type":"text","key":"ksn","label":"KSN (hex)","defaultValue":"FFFF9876543210E00008","placeholder":"20 hex chars (10 bytes)","help":"Key Serial Number — full 80-bit value including the 21-bit transaction counter."}],"outputs":[{"key":"encryptedPinBlock","label":"Encrypted PIN block (ISO 8583 field 52)"},{"key":"clearPinBlock","label":"Clear PIN block (ISO 9564 format 0)"},{"key":"pinKey","label":"PIN encryption key (PEK)"},{"key":"futureKey","label":"Future key (pre-variant)"},{"key":"ipek","label":"Initial PIN Encryption Key (IPEK)"},{"key":"baseKsn","label":"Base KSN (counter cleared)"},{"key":"counterDec","label":"Counter (decimal)"},{"key":"counterHex","label":"Counter (hex)"}],"invocation":{"webUi":"https://toolsly.tools/dukpt-pin-block-calculator","api":null}},{"kind":"utility","slug":"emv-tag-lookup","name":"EMV Tag Lookup","description":"Search the EMV / ISO 7816 tag dictionary by hex tag or by name fragment.","longDescription":"Type a tag in hex (e.g. 9F02) or a fragment of its name (e.g. 'amount') and get the canonical EMV Book 3 / Book 4 description, format and source. Pairs with the EMV TLV Decoder. Runs entirely in your browser.","category":"payment","categoryName":"Payment & cards","keywords":["emv tag lookup","emv tag dictionary","emv tag list","emv tag search","emv tag reference","emv 9f02 meaning","iso 7816 tag lookup","ber tlv tag lookup","emv tag lookup online","emv tag lookup free","emv tag finder","emv book 3 tags"],"badge":"Lookup","url":"https://toolsly.tools/emv-tag-lookup","manifestUrl":"https://toolsly.tools/emv-tag-lookup/tool.json","inputs":[{"type":"text","key":"query","label":"Tag (hex) or name fragment","placeholder":"9F02 or 'amount'","monospace":true,"help":"Hex tags are matched exactly first, then as a prefix. Otherwise the name and description are searched."}],"outputs":[{"key":"tag","label":"Tag"},{"key":"name","label":"Name"},{"key":"format","label":"Format"},{"key":"source","label":"Source"},{"key":"description","label":"Description"}],"invocation":{"webUi":"https://toolsly.tools/emv-tag-lookup","api":null}},{"kind":"utility","slug":"emv-tlv-decoder","name":"EMV TLV Decoder","description":"Decode EMV / ISO 7816 BER-TLV hex into a labelled tree of tags, lengths and values.","longDescription":"Paste card-terminal capture data (e.g. an FCI template, READ RECORD response, or GENERATE AC reply) and get a labelled, indented tree. Each tag is matched against a built-in EMV Book 3 / Book 4 dictionary, constructed templates are recursed into, and values are shown as hex with an ASCII preview when printable. Runs entirely in your browser — your capture never leaves the page.","category":"payment","categoryName":"Payment & cards","keywords":["emv tlv decoder","emv tlv parser","ber tlv decoder","emv decoder online","emv tlv decoder free","iso 7816 tlv parser","emv tag parser","decode emv data","emv response decoder","fci template decoder","emv card data decoder","tlv tree viewer"],"badge":"Decoder","url":"https://toolsly.tools/emv-tlv-decoder","manifestUrl":"https://toolsly.tools/emv-tlv-decoder/tool.json","inputs":[{"type":"text","key":"hex","label":"TLV hex","placeholder":"6F1A840E315041592E5359532E4444463031A5088801025F2D02656E","multiline":true,"monospace":true,"help":"Whitespace and 0x prefixes are ignored. Constructed templates are recursed into."}],"outputs":[{"key":"tree","label":"Decoded tree","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/emv-tlv-decoder","api":null}},{"kind":"converter","slug":"exif-remover","name":"EXIF Remover","description":"Strip EXIF metadata (camera info, GPS location, timestamps) from any photo — protect your privacy before sharing.","longDescription":"Drop in a JPG, PNG or WebP and download a clean copy with all EXIF metadata removed — no camera model, no GPS coordinates, no capture date, no software signature. This matters because photos taken with phones or digital cameras frequently embed your exact GPS location and other identifying information, which travels with the file when you post it on social media, send it to strangers or list it on a marketplace. The image is decoded and re-encoded through HTML Canvas, which never writes EXIF — guaranteeing the output is metadata-free. Runs entirely in your browser; nothing is uploaded.","category":"image","categoryName":"Image","keywords":["exif remover","exif remover online","exif remover free","remove exif","strip exif data","remove exif data online","remove photo metadata","exif cleaner","remove gps from photo","delete exif data","remove image metadata","metadata remover","scrub exif data","photo privacy tool"],"url":"https://toolsly.tools/exif-remover","manifestUrl":"https://toolsly.tools/exif-remover/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".jpg",".jpeg",".png",".webp"],"mimeTypes":["image/jpeg","image/png","image/webp"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"select","key":"format","label":"Output format","defaultValue":"png","choices":[{"value":"png","label":"PNG (lossless)"},{"value":"jpg","label":"JPG (smaller)"},{"value":"webp","label":"WebP"}],"help":"Re-encoding through Canvas strips all EXIF metadata regardless of output format."},{"type":"number","key":"quality","label":"Quality (JPG / WebP only)","defaultValue":92,"min":1,"max":100,"step":1,"help":"Ignored for PNG."}],"invocation":{"webUi":"https://toolsly.tools/exif-remover","api":null}},{"kind":"converter","slug":"exif-viewer","name":"EXIF Viewer","description":"View all the hidden EXIF metadata embedded in your photo — camera, lens, GPS location, timestamps and more.","longDescription":"Drop in a photo (JPG, TIFF, HEIC, WebP) and download a readable text dump of every EXIF metadata field it contains: camera make and model, lens, aperture, shutter speed, ISO, focal length, capture date, GPS coordinates and altitude, software used and color space. Most photos taken by phones and digital cameras carry this data — and it travels with the file when you upload, share or send it. Everything runs locally in your browser; the photo is never uploaded to a server. If you then want to strip this metadata, use the EXIF Remover.","category":"image","categoryName":"Image","keywords":["exif viewer","exif viewer online","exif viewer free","view exif data","exif metadata viewer","read exif from photo","image metadata viewer","photo metadata viewer","exif reader","exif info viewer","view photo location","exif data online","show photo metadata"],"url":"https://toolsly.tools/exif-viewer","manifestUrl":"https://toolsly.tools/exif-viewer/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".jpg",".jpeg",".tif",".tiff",".heic",".webp"],"mimeTypes":["image/jpeg","image/tiff","image/heic","image/heif","image/webp"]},"output":{"type":"file","extension":".txt","mimeType":"text/plain"},"options":[],"invocation":{"webUi":"https://toolsly.tools/exif-viewer","api":null}},{"kind":"utility","slug":"fake-data-generator","name":"Fake Data Generator","description":"Generate realistic-looking fake people data — names, emails, phones, addresses — for seeding databases, designing UIs and writing tests.","longDescription":"Produce believable but synthetic personal data — names, emails, phone numbers, street addresses, dates of birth, companies — in any of 4 locales (English, Spanish, French, German). Useful for seeding a database, populating an empty-state UI, screenshotting a dashboard with realistic-looking content, or generating test fixtures. Supply a seed string to get reproducible output (same seed = same dataset every time). Output is shown as JSON and as a pipe-delimited table.","category":"text","categoryName":"Text & Encoding","keywords":["fake data generator","fake names generator","fake users generator","test data generator","seed data generator","fake email generator","fake address generator","fake phone number generator","mock data generator","lorem person generator","ui placeholder data","json fake data","test user generator","fake profile generator","dummy data generator"],"badge":"Generator","url":"https://toolsly.tools/fake-data-generator","manifestUrl":"https://toolsly.tools/fake-data-generator/tool.json","inputs":[{"type":"number","key":"count","label":"How many records","defaultValue":10,"min":1,"max":200,"step":1},{"type":"select","key":"locale","label":"Locale","defaultValue":"en","choices":[{"value":"en","label":"English (US)"},{"value":"es","label":"Spanish"},{"value":"fr","label":"French"},{"value":"de","label":"German"}]},{"type":"select","key":"fields","label":"Fields","defaultValue":"all","choices":[{"value":"all","label":"All — name, email, phone, address, dob, company"},{"value":"minimal","label":"Minimal — name and email only"},{"value":"contact","label":"Contact — name, email, phone"},{"value":"address","label":"Address — name, street, city, state, zip, country"}]},{"type":"text","key":"seed","label":"Seed (optional — reproducible output)","defaultValue":"","placeholder":"any string"}],"outputs":[{"key":"json","label":"JSON (one record per line)","multiline":true},{"key":"table","label":"Table","multiline":true},{"key":"summary","label":"Summary"}],"invocation":{"webUi":"https://toolsly.tools/fake-data-generator","api":null}},{"kind":"converter","slug":"file-to-hex","name":"File to Hex Dump","description":"Convert any file's bytes to a hex dump (with ASCII sidecar), plain hex, C array or comma-separated bytes.","longDescription":"Upload any file and download a text rendering of its bytes. The default 'Hex dump' format mirrors classic xxd output — 16 bytes per row, offset prefix, ASCII column on the right — perfect for inspecting binary protocols, firmware images, or unfamiliar file formats. Other formats: 'Plain hex' (one continuous lowercase string, no separators — round-trippable through hex-to-file), 'C array' (ready to paste into C/C++ source), and 'Comma-separated bytes' (0xHH, 0xHH, …). Conversion is local — the file never leaves your browser.","category":"text","categoryName":"Text & Encoding","keywords":["file to hex","hex dump","hex dump generator","file to hex dump","binary to hex dump","xxd online","hexdump online","file to hex converter","binary file to hex","convert file to hex","hex viewer","file hex dump","binary file viewer"],"url":"https://toolsly.tools/file-to-hex","manifestUrl":"https://toolsly.tools/file-to-hex/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".bin",".dat",".hex",".raw",".dump",".img",".iso",".exe",".dll",".so",".dylib",".bin",".png",".jpg",".jpeg",".gif",".webp",".bmp",".ico",".tiff",".pdf",".zip",".tar",".gz",".7z",".rar",".mp3",".wav",".ogg",".flac",".mp4",".mov",".avi",".mkv",".webm",".txt",".csv",".json",".xml",".yaml",".yml",".html",".css",".js",".ts",".md",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".key",".pem",".crt",".cer",".der",".p12",".pfx"],"mimeTypes":["application/octet-stream",""]},"output":{"type":"file","extension":".txt","mimeType":"text/plain"},"options":[{"type":"select","key":"format","label":"Output format","defaultValue":"hexdump","choices":[{"value":"hexdump","label":"Hex dump (with ASCII column)"},{"value":"plain","label":"Plain hex (one continuous string)"},{"value":"carray","label":"C array (unsigned char[])"},{"value":"csv","label":"Comma-separated bytes (0xHH, 0xHH, …)"}]}],"invocation":{"webUi":"https://toolsly.tools/file-to-hex","api":null}},{"kind":"converter","slug":"flac-to-mp3","name":"FLAC to MP3","description":"Convert FLAC lossless audio to MP3 — free online, no upload.","longDescription":"Encode a FLAC file as a variable-bitrate MP3 using LAME. This is the typical workflow for shrinking a lossless library down to phone-friendly files while keeping near-transparent quality at higher VBR settings. The conversion runs entirely in your browser via ffmpeg.wasm — your audio never touches a server. Expect a few seconds for a 5-minute song; longer or larger files may take a minute or two.","category":"audio","categoryName":"Audio","keywords":["flac to mp3","convert flac to mp3","flac to mp3 converter","flac to mp3 online","flac to mp3 free","flac to mp3 online free","change flac to mp3","flac mp3 converter","free flac to mp3","online flac to mp3 converter","lossless to mp3"],"url":"https://toolsly.tools/flac-to-mp3","manifestUrl":"https://toolsly.tools/flac-to-mp3/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".flac"],"mimeTypes":["audio/flac","audio/x-flac"]},"output":{"type":"file","extension":".mp3","mimeType":"audio/mpeg"},"options":[{"type":"select","key":"quality","label":"MP3 quality","defaultValue":"2","choices":[{"value":"0","label":"VBR best (~245 kbps)"},{"value":"2","label":"VBR high (~190 kbps)"},{"value":"4","label":"VBR medium (~165 kbps)"},{"value":"6","label":"VBR low (~115 kbps)"},{"value":"9","label":"VBR lowest (~65 kbps)"}],"help":"Lower numbers = better quality and larger files."}],"invocation":{"webUi":"https://toolsly.tools/flac-to-mp3","api":null}},{"kind":"converter","slug":"flac-to-ogg","name":"FLAC to OGG","description":"Convert FLAC lossless audio to Ogg Vorbis — free online, no upload.","longDescription":"Encode a FLAC file as Ogg Vorbis to shrink a lossless library down to phone-friendly files while keeping good perceptual quality. Vorbis is a free, open lossy codec that often beats MP3 at the same bitrate. The encode is lossy, so the exact original samples can't be recovered from the .ogg — pick a higher quality setting if you want near-transparent results. The conversion runs entirely in your browser via ffmpeg.wasm — your file never leaves your device.","category":"audio","categoryName":"Audio","keywords":["flac to ogg","convert flac to ogg","flac to ogg converter","flac to ogg online","flac to ogg free","flac to ogg online free","change flac to ogg","flac ogg converter","free flac to ogg","online flac to ogg converter","flac to vorbis","lossless to ogg"],"url":"https://toolsly.tools/flac-to-ogg","manifestUrl":"https://toolsly.tools/flac-to-ogg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".flac"],"mimeTypes":["audio/flac","audio/x-flac"]},"output":{"type":"file","extension":".ogg","mimeType":"audio/ogg"},"options":[{"type":"select","key":"quality","label":"Vorbis quality","defaultValue":"6","choices":[{"value":"10","label":"Highest (~500 kbps)"},{"value":"8","label":"High (~256 kbps)"},{"value":"6","label":"Medium (~192 kbps)"},{"value":"4","label":"Low (~128 kbps)"},{"value":"2","label":"Lowest (~96 kbps)"}],"help":"Higher numbers = better quality and larger files."}],"invocation":{"webUi":"https://toolsly.tools/flac-to-ogg","api":null}},{"kind":"converter","slug":"flac-to-wav","name":"FLAC to WAV","description":"Convert FLAC lossless audio to uncompressed WAV — free online, no upload.","longDescription":"Decode a FLAC file to a 16-bit PCM WAV. Both formats are lossless, but WAV is uncompressed and the format most DAWs, samplers, and older audio tools expect. The conversion is bit-perfect for the audio samples themselves — only the container changes. Runs entirely in your browser using ffmpeg.wasm; your file never leaves your device. Expect a few seconds for a 5-minute song; longer files may take a minute or two.","category":"audio","categoryName":"Audio","keywords":["flac to wav","convert flac to wav","flac to wav converter","flac to wav online","flac to wav free","flac to wav online free","change flac to wav","flac wav converter","free flac to wav","online flac to wav converter","lossless flac to wav"],"url":"https://toolsly.tools/flac-to-wav","manifestUrl":"https://toolsly.tools/flac-to-wav/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".flac"],"mimeTypes":["audio/flac","audio/x-flac"]},"output":{"type":"file","extension":".wav","mimeType":"audio/wav"},"options":[],"invocation":{"webUi":"https://toolsly.tools/flac-to-wav","api":null}},{"kind":"converter","slug":"gif-compress","name":"GIF Compress","description":"Shrink a GIF by resizing, dropping frame rate, and rebuilding the color palette — typically 40-70% smaller.","longDescription":"Most large GIFs are bloated because they're too big, too smooth, or use too many colors. This tool re-encodes through ffmpeg.wasm with a tuned palette and the dimensions/fps you pick. The animation plays back identically — just at a smaller size and smaller file. Runs entirely in your browser; the GIF never leaves your device.","category":"image","categoryName":"Image","keywords":["gif compress","compress gif","gif compressor","compress gif online","compress gifs","gif compression","compressor gif","shrink gif","reduce gif size","gif optimizer","compress animated gif","free gif compressor"],"url":"https://toolsly.tools/gif-compress","manifestUrl":"https://toolsly.tools/gif-compress/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".gif"],"mimeTypes":["image/gif"]},"output":{"type":"file","extension":".gif","mimeType":"image/gif"},"options":[{"type":"select","key":"width","label":"Output width","defaultValue":"480","choices":[{"value":"0","label":"Keep original"},{"value":"640","label":"640 px"},{"value":"480","label":"480 px (recommended)"},{"value":"320","label":"320 px"},{"value":"240","label":"240 px (very small)"}],"help":"Height scales automatically. Resizing is usually the biggest single saving."},{"type":"select","key":"fps","label":"Frame rate cap","defaultValue":"15","choices":[{"value":"24","label":"24 fps"},{"value":"20","label":"20 fps"},{"value":"15","label":"15 fps (recommended)"},{"value":"12","label":"12 fps"},{"value":"10","label":"10 fps (very small)"}]},{"type":"select","key":"colors","label":"Palette size","defaultValue":"128","choices":[{"value":"256","label":"256 (highest quality)"},{"value":"128","label":"128 (recommended)"},{"value":"64","label":"64"},{"value":"32","label":"32 (smallest file)"}]}],"invocation":{"webUi":"https://toolsly.tools/gif-compress","api":null}},{"kind":"converter","slug":"gif-cropper","name":"GIF Cropper","description":"Crop a GIF in your browser — exports the first frame as PNG (animation is not preserved).","longDescription":"Drop in a GIF, drag a crop selection, and download the cropped result. Important caveat: the browser Canvas API can't re-encode animated GIFs, so this tool exports the cropped region as a PNG (still image, first frame only). Use a dedicated animated-GIF editor if you need to keep the animation. Conversion runs locally in your browser — your file never leaves your device.","category":"image","categoryName":"Image","keywords":["gif cropper","crop gif online","gif crop tool","online gif cropper","crop gif image","free gif cropper","gif crop online","trim gif","crop gif free","browser gif cropper","gif frame cropper","extract gif frame"],"url":"https://toolsly.tools/gif-cropper","manifestUrl":"https://toolsly.tools/gif-cropper/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".gif"],"mimeTypes":["image/gif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/gif-cropper","api":null}},{"kind":"converter","slug":"gif-to-jpg","name":"GIF to JPG","description":"Convert GIF images to JPG — extracts the first frame, runs in your browser.","longDescription":"Drop in a GIF and download a JPG of its first frame. Animated GIFs are reduced to their first frame only — JPG has no concept of animation. JPG has no transparency either, so transparent pixels are flattened against the background color you pick. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["gif to jpg","gif to jpeg","convert gif to jpg","gif to jpg converter","gif to jpg online","gif to jpg free","gif to jpg online free","change gif to jpg","gif jpg converter","free gif to jpg","online gif to jpg converter","gif first frame to jpg"],"url":"https://toolsly.tools/gif-to-jpg","manifestUrl":"https://toolsly.tools/gif-to-jpg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".gif"],"mimeTypes":["image/gif"]},"output":{"type":"file","extension":".jpg","mimeType":"image/jpeg"},"options":[{"type":"number","key":"quality","label":"JPG quality","defaultValue":92,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."},{"type":"select","key":"background","label":"Background (for transparent areas)","defaultValue":"#ffffff","choices":[{"value":"#ffffff","label":"White"},{"value":"#000000","label":"Black"},{"value":"#f3f4f6","label":"Light gray"}],"help":"JPG has no transparency, so transparent pixels get filled with this color."}],"invocation":{"webUi":"https://toolsly.tools/gif-to-jpg","api":null}},{"kind":"converter","slug":"gif-to-png","name":"GIF to PNG","description":"Convert GIF images to PNG — better quality, runs in your browser.","longDescription":"Drop in a GIF and download a PNG. PNG supports millions of colors (GIF is limited to 256) and lossless compression, so the result usually looks identical or better. For animated GIFs, only the first frame is exported. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["gif to png","convert gif to png","gif to png converter","gif to png online","gif to png free","gif to png online free","change gif to png","gif png converter","free gif to png","online gif to png converter"],"url":"https://toolsly.tools/gif-to-png","manifestUrl":"https://toolsly.tools/gif-to-png/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".gif"],"mimeTypes":["image/gif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/gif-to-png","api":null}},{"kind":"converter","slug":"gif-to-webp","name":"GIF to WebP","description":"Convert GIF images to WebP — extracts the first frame, runs in your browser.","longDescription":"Drop in a GIF and download a WebP of its first frame. Animated GIFs are reduced to their first frame only — this tool produces a static WebP, not an animated one. Transparency is preserved. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["gif to webp","convert gif to webp","gif to webp converter","gif to webp online","gif to webp free","gif to webp online free","change gif to webp","gif webp converter","free gif to webp","online gif to webp converter","gif first frame to webp"],"url":"https://toolsly.tools/gif-to-webp","manifestUrl":"https://toolsly.tools/gif-to-webp/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".gif"],"mimeTypes":["image/gif"]},"output":{"type":"file","extension":".webp","mimeType":"image/webp"},"options":[{"type":"number","key":"quality","label":"WebP quality","defaultValue":90,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."}],"invocation":{"webUi":"https://toolsly.tools/gif-to-webp","api":null}},{"kind":"utility","slug":"gradient-generator","name":"CSS Gradient Generator","description":"Build a linear or radial CSS gradient between two colors with custom angle and stop count.","longDescription":"Generate CSS gradients (linear or radial) between two colors with full control over the angle (for linear) and the number of color stops. The tool interpolates intermediate stops in HSL space using the shortest hue path — producing smoother transitions than naive RGB interpolation, especially for hue-shifting gradients. Output is a ready-to-paste `background:` declaration plus a best-effort Tailwind class. Stop count between 2 and 8. All math is local — your colors never leave the browser.","category":"color","categoryName":"Color","keywords":["gradient generator","css gradient generator","linear gradient css","radial gradient css","gradient maker online","gradient builder","css gradient builder","two color gradient","gradient color stops","tailwind gradient class","gradient generator free","gradient css copy paste"],"badge":"Generator","url":"https://toolsly.tools/gradient-generator","manifestUrl":"https://toolsly.tools/gradient-generator/tool.json","inputs":[{"type":"text","key":"start","label":"Start color","placeholder":"#3b82f6","defaultValue":"#3b82f6","monospace":true},{"type":"text","key":"end","label":"End color","placeholder":"#ec4899","defaultValue":"#ec4899","monospace":true},{"type":"select","key":"type","label":"Gradient type","defaultValue":"linear","choices":[{"value":"linear","label":"Linear"},{"value":"radial","label":"Radial"}]},{"type":"number","key":"angle","label":"Angle (deg)","defaultValue":90,"min":0,"max":360,"step":1,"help":"Only used for linear gradients (0 = bottom→top, 90 = left→right)."},{"type":"number","key":"stops","label":"Stop count","defaultValue":2,"min":2,"max":8,"step":1}],"outputs":[{"key":"css","label":"CSS","multiline":true},{"key":"tailwindClass","label":"Tailwind (closest)"},{"key":"preview","label":"Interpolated stops","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/gradient-generator","api":null}},{"kind":"utility","slug":"hash-text","name":"Hash Text","description":"Compute MD5, SHA-1, SHA-256, SHA-384 or SHA-512 of any text — runs locally in your browser.","longDescription":"Compute the cryptographic hash of any string using MD5, SHA-1, SHA-256, SHA-384 or SHA-512. Output the digest as lowercase hex, uppercase hex, or Base64. Everything runs entirely in your browser via the Web Crypto API (and crypto-js for MD5) — your input is never uploaded, free and online.","category":"text","categoryName":"Text & Encoding","keywords":["hash text","hash generator","text hash online","sha256 generator","sha-256 hash","md5 hash generator","md5 online","sha1 hash","sha-512 hash","sha-384 hash","string hash calculator","hash online free","compute hash","checksum generator"],"badge":"Hasher","url":"https://toolsly.tools/hash-text","manifestUrl":"https://toolsly.tools/hash-text/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Hello, world!","multiline":true,"monospace":true,"help":"Input is UTF-8 encoded before hashing."},{"type":"select","key":"algorithm","label":"Algorithm","defaultValue":"SHA-256","choices":[{"value":"MD5","label":"MD5 (128-bit, insecure)"},{"value":"SHA-1","label":"SHA-1 (160-bit, insecure)"},{"value":"SHA-256","label":"SHA-256 (recommended)"},{"value":"SHA-384","label":"SHA-384"},{"value":"SHA-512","label":"SHA-512"}]},{"type":"select","key":"output","label":"Output format","defaultValue":"hex-lower","choices":[{"value":"hex-lower","label":"Hex (lowercase)"},{"value":"hex-upper","label":"Hex (uppercase)"},{"value":"base64","label":"Base64"}]}],"outputs":[{"key":"hash","label":"Hash","multiline":true},{"key":"length","label":"Digest size (bytes)"}],"invocation":{"webUi":"https://toolsly.tools/hash-text","api":null}},{"kind":"converter","slug":"heic-to-jpg","name":"HEIC to JPG","description":"Convert HEIC / HEIF (iPhone photos) to JPG (JPEG) — runs in your browser.","longDescription":"Drop in a HEIC or HEIF photo from your iPhone or iPad and download a JPG. HEIC is Apple's high-efficiency format and isn't supported everywhere — JPG works on every device, app, and service. Conversion runs locally in your browser using a WebAssembly decoder — files never leave your device.","category":"image","categoryName":"Image","keywords":["heic to jpg","heic to jpeg","convert heic to jpg","heic to jpg converter","heic to jpg online","heic to jpg free","heic to jpg online free","iphone heic to jpg","heif to jpg","free heic to jpg","online heic to jpg converter"],"url":"https://toolsly.tools/heic-to-jpg","manifestUrl":"https://toolsly.tools/heic-to-jpg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".heic",".heif"],"mimeTypes":["image/heic","image/heif"]},"output":{"type":"file","extension":".jpg","mimeType":"image/jpeg"},"options":[{"type":"number","key":"quality","label":"JPG quality","defaultValue":92,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."}],"invocation":{"webUi":"https://toolsly.tools/heic-to-jpg","api":null}},{"kind":"converter","slug":"heic-to-png","name":"HEIC to PNG","description":"Convert HEIC / HEIF (iPhone photos) to PNG — lossless, runs in your browser.","longDescription":"Drop in a HEIC or HEIF photo from your iPhone or iPad and download a lossless PNG. PNG is universally supported and preserves every pixel exactly. Conversion runs locally in your browser using a WebAssembly decoder — files never leave your device.","category":"image","categoryName":"Image","keywords":["heic to png","convert heic to png","heic to png converter","heic to png online","heic to png free","heic to png online free","iphone heic to png","heif to png","change heic to png","free heic to png","online heic to png converter"],"url":"https://toolsly.tools/heic-to-png","manifestUrl":"https://toolsly.tools/heic-to-png/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".heic",".heif"],"mimeTypes":["image/heic","image/heif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/heic-to-png","api":null}},{"kind":"converter","slug":"heic-to-webp","name":"HEIC to WebP","description":"Convert HEIC / HEIF (iPhone photos) to WebP — small files, runs in your browser.","longDescription":"Drop in a HEIC or HEIF photo from your iPhone or iPad and download a WebP. WebP keeps file sizes small while staying compatible with every modern browser. Decoding uses a WebAssembly HEIF decoder bundled in-page, so the photo never leaves your device. Conversion runs locally in your browser.","category":"image","categoryName":"Image","keywords":["heic to webp","convert heic to webp","heic to webp converter","heic to webp online","heic to webp free","heic to webp online free","iphone heic to webp","heif to webp","change heic to webp","free heic to webp","online heic to webp converter"],"url":"https://toolsly.tools/heic-to-webp","manifestUrl":"https://toolsly.tools/heic-to-webp/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".heic",".heif"],"mimeTypes":["image/heic","image/heif"]},"output":{"type":"file","extension":".webp","mimeType":"image/webp"},"options":[{"type":"number","key":"quality","label":"WebP quality","defaultValue":90,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."}],"invocation":{"webUi":"https://toolsly.tools/heic-to-webp","api":null}},{"kind":"utility","slug":"hex-to-binary","name":"Hex to Binary","description":"Convert a hexadecimal number to binary — each hex digit becomes 4 bits, padded. Also shows decimal.","longDescription":"Paste a hex number and get the equivalent binary representation, with each hex digit mapped to its full 4-bit nibble (so 1 becomes 0001, not just 1). The decimal value is shown alongside for reference. Uses BigInt internally for arbitrary-size inputs. Runs entirely locally in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["hex to binary","hexadecimal to binary","hex to bin","convert hex to binary","hex to binary converter","hex to binary online","hex2bin","hex to bits","0x to binary","base 16 to base 2","hex binary decimal","hex to binary calculator","hex digit to nibble"],"badge":"Converter","url":"https://toolsly.tools/hex-to-binary","manifestUrl":"https://toolsly.tools/hex-to-binary/tool.json","inputs":[{"type":"text","key":"hex","label":"Hexadecimal","placeholder":"deadbeef","monospace":true,"help":"Optional 0x prefix. Case-insensitive."}],"outputs":[{"key":"binary","label":"Binary (each hex digit → 4 bits)"},{"key":"binaryGrouped","label":"Binary (grouped by nibble)"},{"key":"decimal","label":"Decimal"}],"invocation":{"webUi":"https://toolsly.tools/hex-to-binary","api":null}},{"kind":"utility","slug":"hex-to-decimal","name":"Hex to Decimal","description":"Convert a hexadecimal number to decimal — also shows binary and octal. Handles arbitrary-size integers via BigInt.","longDescription":"Paste a hex number (with or without an 0x prefix) and instantly get its decimal value, plus the binary and octal representations for free. Uses BigInt under the hood so values much larger than JavaScript's Number.MAX_SAFE_INTEGER work fine — useful for inspecting memory addresses, hashes, or large protocol fields. Runs entirely in your browser; nothing leaves your machine.","category":"text","categoryName":"Text & Encoding","keywords":["hex to decimal","hexadecimal to decimal","hex to dec","convert hex to decimal","hex to decimal converter","hexadecimal to decimal online","hex2dec","hex to integer","hex to base 10","0x to decimal","hex to number","hexadecimal converter","hex decimal binary octal"],"badge":"Converter","url":"https://toolsly.tools/hex-to-decimal","manifestUrl":"https://toolsly.tools/hex-to-decimal/tool.json","inputs":[{"type":"text","key":"hex","label":"Hexadecimal","placeholder":"deadbeef or 0xDEADBEEF","monospace":true,"help":"Optional 0x prefix. Case-insensitive. Spaces and underscores are stripped."}],"outputs":[{"key":"decimal","label":"Decimal (base 10)"},{"key":"binary","label":"Binary (base 2)"},{"key":"octal","label":"Octal (base 8)"},{"key":"hex_normalized","label":"Hex normalized (0x, uppercase)"}],"invocation":{"webUi":"https://toolsly.tools/hex-to-decimal","api":null}},{"kind":"converter","slug":"hex-to-file","name":"Hex to Binary File","description":"Parse a hex dump or hex string back into a binary file — strips offsets, ASCII columns, prefixes and separators automatically.","longDescription":"The inverse of file-to-hex. Paste or upload a text file containing hex bytes — in any reasonable shape (classic xxd hex dump with offset and ASCII column, plain continuous hex, 0xHH lists, C arrays, comma- or space-separated) — and download a .bin file with the reconstructed bytes. Offsets, ASCII sidecars, 0x prefixes, commas, and whitespace are all stripped. Hex pairs must be even in number on each line. Conversion is local — your data never leaves the browser.","category":"text","categoryName":"Text & Encoding","keywords":["hex to file","hex to bin","hex to binary file","hex dump to binary","xxd reverse","hexdump to file","hex string to bin","convert hex to binary file","hex to bytes file","hex parser to file","binary from hex","hex importer","hex to binary online"],"url":"https://toolsly.tools/hex-to-file","manifestUrl":"https://toolsly.tools/hex-to-file/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".txt",".hex",".dump"],"mimeTypes":["text/plain",""]},"output":{"type":"file","extension":".bin","mimeType":"application/octet-stream"},"options":[{"type":"text","key":"filename","label":"Output filename","defaultValue":"output.bin","placeholder":"output.bin","help":"Used for the downloaded file. The .bin extension is added if missing."}],"invocation":{"webUi":"https://toolsly.tools/hex-to-file","api":null}},{"kind":"utility","slug":"hex-to-text","name":"Hex to Text","description":"Decode a hex string back to UTF-8 text — accepts 0x prefixes, spaces, and any case.","longDescription":"Paste a hex-encoded string and recover the original UTF-8 text. The tool strips whitespace, optional 0x prefixes, and parses byte-by-byte to rebuild the source characters. Useful for inspecting binary protocols, debugging hex dumps, or decoding hex-encoded payloads. Runs locally in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["hex to text","hex decoder","hex to string","hex to ascii","hex to utf8","decode hex","hexadecimal decoder","hex string decoder","convert hex to text","hex to text online","hex to text free","hex viewer","hex bytes decoder"],"badge":"Decoder","url":"https://toolsly.tools/hex-to-text","manifestUrl":"https://toolsly.tools/hex-to-text/tool.json","inputs":[{"type":"text","key":"hex","label":"Hex string","placeholder":"48656c6c6f2c20776f726c6421","multiline":true,"monospace":true,"help":"Spaces, newlines, commas, and 0x prefixes are stripped automatically."}],"outputs":[{"key":"text","label":"Decoded text","multiline":true},{"key":"byteLength","label":"Byte length"}],"invocation":{"webUi":"https://toolsly.tools/hex-to-text","api":null}},{"kind":"utility","slug":"hmac-generator","name":"HMAC Generator","description":"Compute HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 or HMAC-SHA512 of a message under a secret key — output in hex and base64.","longDescription":"Generate a Hash-based Message Authentication Code (HMAC) from a message and a secret key, using the algorithm of your choice. The key can be UTF-8, hex or base64 — pick the encoding to match how it's stored. Output is shown in both hex and base64 so you can paste straight into whichever API your stack expects. Computation uses WebCrypto's subtle.sign and runs entirely in your browser — your key and message never leave the device.","category":"text","categoryName":"Text & Encoding","keywords":["hmac generator","hmac sha256 generator","hmac sha512","hmac sha1","hmac calculator online","compute hmac","hmac hex base64","hmac signature generator","api signature generator","webhook signature hmac","hmac key encoding","hmac authentication code","hmac online tool","hmac sha256 online","hmac sha384"],"badge":"Crypto","url":"https://toolsly.tools/hmac-generator","manifestUrl":"https://toolsly.tools/hmac-generator/tool.json","inputs":[{"type":"text","key":"message","label":"Message","multiline":true,"placeholder":"The message to authenticate…","defaultValue":""},{"type":"text","key":"secret","label":"Secret key","placeholder":"Key value (UTF-8 / hex / base64 depending on encoding)","defaultValue":"","monospace":true},{"type":"select","key":"algorithm","label":"Algorithm","defaultValue":"SHA-256","choices":[{"value":"SHA-1","label":"HMAC-SHA1"},{"value":"SHA-256","label":"HMAC-SHA256"},{"value":"SHA-384","label":"HMAC-SHA384"},{"value":"SHA-512","label":"HMAC-SHA512"}]},{"type":"select","key":"keyEncoding","label":"Key encoding","defaultValue":"utf8","choices":[{"value":"utf8","label":"UTF-8 (plain text)"},{"value":"hex","label":"Hex"},{"value":"base64","label":"Base64"}]}],"outputs":[{"key":"hex","label":"HMAC (hex)"},{"key":"base64","label":"HMAC (base64)"},{"key":"byteLength","label":"Digest length (bytes)"}],"invocation":{"webUi":"https://toolsly.tools/hmac-generator","api":null}},{"kind":"utility","slug":"html-beautifier","name":"HTML Beautifier","description":"Pretty-print HTML — readable indentation with nested tags on their own lines.","longDescription":"Paste minified or messy HTML and reformat it with consistent indentation, line breaks between sibling elements and tidy attribute alignment. Pick 2 spaces, 4 spaces or tabs to match your project style. Powered by js-beautify's html_beautify. Runs entirely in your browser — your markup never leaves this page.","category":"dev","categoryName":"Dev","keywords":["html beautifier","html beautifier online","html formatter","format html online","pretty print html","html prettifier","html indent","beautify html","html formatter free","online html beautifier","html pretty print online","reformat html"],"badge":"Beautifier","url":"https://toolsly.tools/html-beautifier","manifestUrl":"https://toolsly.tools/html-beautifier/tool.json","inputs":[{"type":"text","key":"html","label":"HTML","placeholder":"<div><p>Hello</p></div>","multiline":true,"monospace":true},{"type":"select","key":"indent","label":"Indent","defaultValue":"2","choices":[{"value":"2","label":"2 spaces"},{"value":"4","label":"4 spaces"},{"value":"tab","label":"Tabs"}]}],"outputs":[{"key":"formatted","label":"Formatted HTML","multiline":true},{"key":"originalSize","label":"Original size (chars)"},{"key":"formattedSize","label":"Formatted size (chars)"}],"invocation":{"webUi":"https://toolsly.tools/html-beautifier","api":null}},{"kind":"utility","slug":"html-decode","name":"HTML Decode","description":"Decode HTML entities back to plain text — handles numeric (&#NNN; / &#xNNN;) and the common named entities.","longDescription":"Paste HTML-encoded text and recover the original plain string. Decodes numeric entities (decimal &#NNN; and hex &#xNNN;) plus 50+ common named entities like &amp;, &lt;, &nbsp;, &copy;, &mdash; etc. Runs locally in your browser; your input is never uploaded.","category":"text","categoryName":"Text & Encoding","keywords":["html decode","html decoder","html entity decoder","decode html entities","html unescape","html character decoder","numeric entity decoder","named entity decoder","html decoder online","html decoder free","ampersand decoder","html special chars decoder","convert html entities"],"badge":"Decoder","url":"https://toolsly.tools/html-decode","manifestUrl":"https://toolsly.tools/html-decode/tool.json","inputs":[{"type":"text","key":"text","label":"HTML-encoded text","placeholder":"&lt;b&gt;Hello &amp; welcome&lt;/b&gt;","multiline":true,"monospace":true}],"outputs":[{"key":"decoded","label":"Decoded text","multiline":true},{"key":"length","label":"Output length (chars)"}],"invocation":{"webUi":"https://toolsly.tools/html-decode","api":null}},{"kind":"utility","slug":"html-encode","name":"HTML Encode","description":"Encode text to HTML entities — escape <, >, &, \" and ' (and optionally everything non-ASCII).","longDescription":"Convert any string into HTML-safe entities. The 5 reserved characters (&, <, >, \", ') are always escaped as named entities; non-ASCII characters can optionally be encoded as numeric entities (&#NNN;) so the result is safe to embed in 7-bit ASCII HTML. Runs entirely in your browser — your text is never uploaded.","category":"text","categoryName":"Text & Encoding","keywords":["html encode","html encoder","html entity encoder","html escape","encode html entities","html special characters","text to html entities","html encoder online","html encoder free","ampersand encoder","html character encoder","ascii html encoder","numeric entity encoder"],"badge":"Encoder","url":"https://toolsly.tools/html-encode","manifestUrl":"https://toolsly.tools/html-encode/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"<b>Hello & welcome</b>","multiline":true,"monospace":true},{"type":"boolean","key":"encodeNonAscii","label":"Encode all non-ASCII characters as numeric entities","defaultValue":false,"help":"When on, any char with code > 127 becomes &#NNN;."}],"outputs":[{"key":"encoded","label":"HTML-encoded","multiline":true},{"key":"length","label":"Output length (chars)"}],"invocation":{"webUi":"https://toolsly.tools/html-encode","api":null}},{"kind":"utility","slug":"html-minifier","name":"HTML Minifier","description":"Minify HTML — collapse whitespace, drop comments and optionally compress inline JS and CSS.","longDescription":"Paste any HTML markup and get a tightly-packed, production-ready version. Whitespace between tags is collapsed, comments and DOCTYPE are normalised, and you can optionally minify embedded <script> and <style> blocks. Content inside <pre>, <textarea>, and <code> is preserved verbatim. Conservative — never rewrites identifiers in scripts. Runs entirely in your browser — your markup never leaves this page.","category":"dev","categoryName":"Dev","keywords":["html minifier","html minifier online","minify html","minify html online","compress html","html compressor","html optimizer","shrink html","html minify free","online html minifier","html minify tool","reduce html size"],"badge":"Minifier","url":"https://toolsly.tools/html-minifier","manifestUrl":"https://toolsly.tools/html-minifier/tool.json","inputs":[{"type":"text","key":"html","label":"HTML","placeholder":"<!DOCTYPE html>\n<html>\n  <body>...</body>\n</html>","multiline":true,"monospace":true},{"type":"boolean","key":"minifyJs","label":"Minify embedded JavaScript","defaultValue":true},{"type":"boolean","key":"minifyCss","label":"Minify embedded CSS","defaultValue":true}],"outputs":[{"key":"minified","label":"Minified HTML","multiline":true},{"key":"originalSize","label":"Original size (chars)"},{"key":"minifiedSize","label":"Minified size (chars)"},{"key":"savings","label":"Saved"}],"invocation":{"webUi":"https://toolsly.tools/html-minifier","api":null}},{"kind":"converter","slug":"html-to-md","name":"HTML to Markdown","description":"Convert HTML files into clean Markdown (.md) — free online, no upload.","longDescription":"Drop in an .html or .htm file and download a Markdown document. Headings, paragraphs, bold/italic, links, images, inline code, code blocks, ordered and unordered lists (with nesting), blockquotes, horizontal rules and tables are all converted. Anything unrecognised falls back to its plain text content. Runs entirely in your browser — your file never leaves your device.","category":"document","categoryName":"Document","keywords":["html to md","html to markdown","convert html to md","convert html to markdown","html to md converter","html to markdown online","html to markdown free","html md converter","online html to markdown converter","change html to markdown","free html to markdown","html to markdown online free"],"url":"https://toolsly.tools/html-to-md","manifestUrl":"https://toolsly.tools/html-to-md/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".html",".htm"],"mimeTypes":["text/html","application/xhtml+xml",""]},"output":{"type":"file","extension":".md","mimeType":"text/markdown"},"options":[],"invocation":{"webUi":"https://toolsly.tools/html-to-md","api":null}},{"kind":"converter","slug":"html-to-pdf","name":"HTML to PDF","description":"Convert HTML files to nicely-paginated PDF documents — free online, no upload.","longDescription":"Drop your .html or .htm file (or paste the markup) and download a PDF. The renderer uses your own browser to lay out the page, so it picks up your fonts and any inline CSS — no JS execution sandbox, no server round-trip. Long pages are split across multiple PDF pages automatically. Pick A4, US Letter or US Legal. Note: external stylesheets and images that require network requests may not load in the offscreen render. Conversion runs entirely in your browser.","category":"document","categoryName":"Document","keywords":["html to pdf","html to pdf online free","convert html to pdf","html to pdf converter","html file to pdf","save html as pdf","html to pdf online","free html to pdf","htm to pdf","webpage to pdf","html pdf converter","online html to pdf converter"],"url":"https://toolsly.tools/html-to-pdf","manifestUrl":"https://toolsly.tools/html-to-pdf/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".html",".htm"],"mimeTypes":["text/html","application/xhtml+xml","text/plain",""]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"select","key":"pageSize","label":"Page size","defaultValue":"a4","choices":[{"value":"a4","label":"A4"},{"value":"letter","label":"US Letter"},{"value":"legal","label":"US Legal"}]}],"invocation":{"webUi":"https://toolsly.tools/html-to-pdf","api":null}},{"kind":"utility","slug":"http-status-code","name":"HTTP Status Code Lookup","description":"Look up any HTTP status code — title, category, RFC explanation, and the situations it's actually used for.","longDescription":"Quick reference for every standard HTTP status code from 100 Continue through 511 Network Authentication Required, plus the WebDAV codes (207, 422, 423…), Nginx-only codes (444, 499…), and the Cloudflare 5xx series (520-527). Each entry has the canonical title, the category (1xx/2xx/3xx/4xx/5xx), an RFC-flavoured one-line description, and a 'commonly used for' note so you know whether a 422 vs. 400 vs. 409 is the right pick.","category":"dev","categoryName":"Dev","keywords":["http status code lookup","http status code list","what does 404 mean","what does 502 mean","http response codes","http status code reference","401 vs 403","422 unprocessable entity","http 429 rate limit","503 service unavailable","http error codes","rest api status codes","http status code cheat sheet","webdav status codes","cloudflare 5xx errors"],"badge":"Reference","url":"https://toolsly.tools/http-status-code","manifestUrl":"https://toolsly.tools/http-status-code/tool.json","inputs":[{"type":"text","key":"code","label":"Status code","defaultValue":"404","placeholder":"e.g. 200, 404, 422, 503"}],"outputs":[{"key":"title","label":"Title"},{"key":"category","label":"Category"},{"key":"description","label":"Description"},{"key":"commonUsage","label":"Commonly used for"},{"key":"mdnUrl","label":"MDN reference"}],"invocation":{"webUi":"https://toolsly.tools/http-status-code","api":null}},{"kind":"utility","slug":"iban-validator","name":"IBAN Validator","description":"Validate an IBAN — checks the country format, length and ISO 13616 MOD-97 checksum.","longDescription":"Paste any International Bank Account Number (IBAN) and verify it: the country prefix is matched against the ISO 13616 registry (~80 countries), the length is checked against the spec for that country, and the MOD-97 checksum is computed digit-by-digit using big-integer chunked arithmetic. The bank code and account number are extracted per the country's BBAN layout. Useful for finance teams verifying invoices, backend engineers wiring up SEPA payouts, and customer-support agents triaging failed transfers. Runs entirely in your browser — your data is never sent anywhere.","category":"payment","categoryName":"Payment & cards","keywords":["iban validator","iban check","iban checker","validate iban","iban verify","iban mod 97","iban checksum","iso 13616","iban format check","iban length check","sepa iban validator","iban tool","iban parser"],"badge":"Validator","url":"https://toolsly.tools/iban-validator","manifestUrl":"https://toolsly.tools/iban-validator/tool.json","inputs":[{"type":"text","key":"iban","label":"IBAN","placeholder":"DE89 3704 0044 0532 0130 00","monospace":true,"help":"Spaces are stripped automatically. The IBAN stays in your browser."}],"outputs":[{"key":"valid","label":"Valid"},{"key":"country","label":"Country"},{"key":"length","label":"Length (expected vs actual)"},{"key":"bankCode","label":"Bank code"},{"key":"accountNumber","label":"Account number"},{"key":"printableFormat","label":"Printable format"}],"invocation":{"webUi":"https://toolsly.tools/iban-validator","api":null}},{"kind":"converter","slug":"ico-to-jpg","name":"ICO to JPG","description":"Extract the largest image from a Windows ICO file and save it as JPG — runs in your browser.","longDescription":"Drop in a Windows ICO (or favicon.ico) and download a JPG of the largest embedded image. JPG has no transparency, so transparent pixels are flattened against the background color you pick. Useful for thumbnails, document embedding, or feeding the icon into apps that don't accept ICO. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["ico to jpg","ico to jpeg","convert ico to jpg","ico to jpg converter","ico to jpg online","ico to jpg free","favicon to jpg","extract icon to jpg","online ico to jpg converter","free ico to jpg","windows icon to jpg"],"url":"https://toolsly.tools/ico-to-jpg","manifestUrl":"https://toolsly.tools/ico-to-jpg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".ico"],"mimeTypes":["image/x-icon","image/vnd.microsoft.icon"]},"output":{"type":"file","extension":".jpg","mimeType":"image/jpeg"},"options":[{"type":"number","key":"quality","label":"JPG quality","defaultValue":92,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."},{"type":"select","key":"background","label":"Background (for transparent areas)","defaultValue":"#ffffff","choices":[{"value":"#ffffff","label":"White"},{"value":"#000000","label":"Black"},{"value":"#f3f4f6","label":"Light gray"}],"help":"JPG has no transparency, so transparent pixels get filled with this color."}],"invocation":{"webUi":"https://toolsly.tools/ico-to-jpg","api":null}},{"kind":"converter","slug":"ico-to-png","name":"ICO to PNG","description":"Extract the largest image from a Windows ICO file and save it as PNG — runs in your browser.","longDescription":"Drop in a Windows ICO (or favicon.ico) file and download a lossless PNG of the largest embedded image. ICO files can contain multiple sizes — this tool picks the highest-resolution entry. If the entry is stored as PNG (common for 256×256 icons) it's extracted byte-for-byte; otherwise the BMP-formatted entry is decoded and re-encoded as PNG, preserving transparency where present. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["ico to png","convert ico to png","ico to png converter","ico to png online","ico to png free","favicon to png","extract icon to png","online ico to png converter","free ico to png","windows icon to png","ico png converter"],"url":"https://toolsly.tools/ico-to-png","manifestUrl":"https://toolsly.tools/ico-to-png/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".ico"],"mimeTypes":["image/x-icon","image/vnd.microsoft.icon"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/ico-to-png","api":null}},{"kind":"converter","slug":"image-blur","name":"Blur Image","description":"Blur any image with an adjustable radius — fast separable box blur, runs in your browser.","longDescription":"Drop in an image and download a blurred version. The radius controls how soft the result is — 1 is barely blurred, 5 (default) is a gentle smoothing, and 20 is a strong glassy effect. Implementation is a two-pass separable box blur with a running window sum, so even multi-megapixel images stay responsive. For visually-Gaussian results, chain multiple smaller blurs (or just raise the radius). Output format matches the input where possible, defaulting to PNG. Everything runs locally in your browser.","category":"image","categoryName":"Image","keywords":["blur image online","blur photo online","image blur tool","free image blurrer","blur picture online","online image blur","soft focus image","blur image free","image blur converter","gaussian blur online","smooth image online","box blur image tool"],"url":"https://toolsly.tools/image-blur","manifestUrl":"https://toolsly.tools/image-blur/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp",".avif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/avif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"number","key":"radius","label":"Blur radius","defaultValue":5,"min":1,"max":20,"step":1,"help":"Higher = blurrier. Very large radii on very large images may take a moment."}],"invocation":{"webUi":"https://toolsly.tools/image-blur","api":null}},{"kind":"converter","slug":"image-border","name":"Image Border (Overlay)","description":"Draw an inset solid-color border on any image — same canvas size, runs in your browser.","longDescription":"Drop in an image and download a copy with a solid-color border drawn inset around the edges (no change to the canvas dimensions). Use this when you need a visible frame but can't grow the image. Pick the border thickness in pixels and a color. Output is always PNG so transparency in the unbordered region is preserved. For an outset border that grows the image, use the Image Padding tool instead. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["image border","add border to image","image border online","image frame tool","image border generator","free image border","online image border","add frame to image","image edge border","photo border online","inset border image"],"url":"https://toolsly.tools/image-border","manifestUrl":"https://toolsly.tools/image-border/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".bmp"],"mimeTypes":["image/png","image/jpeg","image/webp","image/bmp"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"number","key":"borderWidth","label":"Border thickness (px)","defaultValue":8,"min":1,"max":200,"step":1},{"type":"select","key":"color","label":"Border color","defaultValue":"black","choices":[{"value":"black","label":"Black"},{"value":"white","label":"White"},{"value":"light-gray","label":"Light gray"},{"value":"red","label":"Red"},{"value":"blue","label":"Blue"}]}],"invocation":{"webUi":"https://toolsly.tools/image-border","api":null}},{"kind":"converter","slug":"image-brightness","name":"Image Brightness Adjuster","description":"Brighten or darken any image — drag the amount, runs entirely in your browser.","longDescription":"Drop in an image and download a brighter or darker copy. Each R/G/B channel is shifted by the amount you set: positive values brighten, negative darken, 0 means no change. Output format matches the input where possible (PNG / JPG / WebP), defaulting to PNG so transparency is preserved. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["image brightness","image brightness adjuster","adjust image brightness","brighten image online","darken image online","image brightness tool","online image brightness","free image brightness","change image brightness","photo brightness online","image brightness editor"],"url":"https://toolsly.tools/image-brightness","manifestUrl":"https://toolsly.tools/image-brightness/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".bmp"],"mimeTypes":["image/png","image/jpeg","image/webp","image/bmp"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"number","key":"amount","label":"Brightness amount","defaultValue":20,"min":-100,"max":100,"step":1,"help":"Negative darkens, positive brightens. 0 means no change."}],"invocation":{"webUi":"https://toolsly.tools/image-brightness","api":null}},{"kind":"converter","slug":"image-compress","name":"Compress JPG","description":"Compress JPG images with a quality slider — shrink file size, runs entirely in your browser.","longDescription":"Drop in a JPG (or JPEG) and re-encode it at a lower quality to shrink the file. Quality 1 is the smallest, very lossy file; 100 is the largest, near-original file. 60–80 is a good middle ground for web — typically yielding 40–70% size savings vs. the source with minimal visible loss. Transparent areas (rare in JPG sources) are flattened to white. Everything runs locally in your browser; your file never gets uploaded.","category":"image","categoryName":"Image","keywords":["compress jpg","compress jpeg online","jpg compressor","compress jpg online free","reduce jpg size","jpg size reducer","shrink jpg online","online jpg compressor","free jpg compressor","image compress online","compress photos online","jpeg compressor free"],"url":"https://toolsly.tools/image-compress","manifestUrl":"https://toolsly.tools/image-compress/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".jpg",".jpeg"],"mimeTypes":["image/jpeg"]},"output":{"type":"file","extension":".jpg","mimeType":"image/jpeg"},"options":[{"type":"number","key":"quality","label":"JPG quality","defaultValue":75,"min":1,"max":100,"step":1,"help":"Lower = smaller file but more compression artifacts. 60–80 is usually the sweet spot."}],"invocation":{"webUi":"https://toolsly.tools/image-compress","api":null}},{"kind":"converter","slug":"image-contrast","name":"Image Contrast Adjuster","description":"Increase or decrease image contrast — drag the amount, runs in your browser.","longDescription":"Drop in an image and download a higher- or lower-contrast version. Uses the standard contrast formula: each channel is pulled toward or away from 50% gray by the factor you set. Positive amounts pop the highlights and shadows; negative amounts mute the image toward gray. Output format matches the input where possible, defaulting to PNG. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["image contrast","image contrast adjuster","adjust image contrast","increase image contrast","decrease image contrast","image contrast tool","online image contrast","free image contrast","change image contrast","photo contrast online","image contrast editor"],"url":"https://toolsly.tools/image-contrast","manifestUrl":"https://toolsly.tools/image-contrast/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".bmp"],"mimeTypes":["image/png","image/jpeg","image/webp","image/bmp"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"number","key":"amount","label":"Contrast amount","defaultValue":20,"min":-100,"max":100,"step":1,"help":"Negative reduces contrast (toward gray), positive boosts it. 0 means no change."}],"invocation":{"webUi":"https://toolsly.tools/image-contrast","api":null}},{"kind":"converter","slug":"image-cropper","name":"Image Cropper","description":"Crop any image (PNG, JPG, WebP, GIF, BMP, AVIF) right in your browser — drag a box, hit crop.","longDescription":"The universal cropper: drop in an image, drag the selection box, and download the cropped result. Works on PNG, JPG/JPEG, WebP, GIF (first frame), BMP and AVIF. Output format matches your input — PNGs stay PNG, JPGs stay JPG, WebPs stay WebP. GIFs are exported as PNG because the Canvas API can't re-encode animated GIFs. Everything runs locally in your browser; your images never get uploaded.","category":"image","categoryName":"Image","keywords":["image cropper","crop image online","crop image free","online image crop tool","crop picture online","free image cropper","image crop tool","crop photo online","drag to crop image","browser image cropper","crop image without upload","private image cropper"],"url":"https://toolsly.tools/image-cropper","manifestUrl":"https://toolsly.tools/image-cropper/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp",".avif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/avif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/image-cropper","api":null}},{"kind":"converter","slug":"image-flip-horizontal","name":"Flip Image Horizontally","description":"Mirror an image left-to-right — lossless, runs entirely in your browser.","longDescription":"Drop in an image and download a horizontally mirrored (left-right flipped) version. The flip is lossless: pixels are re-mapped without resampling, so quality is preserved exactly. Useful for portrait mirroring, layout mockups, and selfie correction. Output format matches the input where possible, defaulting to PNG. Everything runs locally in your browser.","category":"image","categoryName":"Image","keywords":["flip image horizontally","mirror image online","horizontal flip image","flip image online","image mirror tool","flip photo horizontally","horizontal mirror image","free image flipper","online image flip","browser image mirror","left right flip image","image flip horizontal free"],"url":"https://toolsly.tools/image-flip-horizontal","manifestUrl":"https://toolsly.tools/image-flip-horizontal/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp",".avif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/avif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/image-flip-horizontal","api":null}},{"kind":"converter","slug":"image-flip-vertical","name":"Flip Image Vertically","description":"Mirror an image top-to-bottom — lossless, runs entirely in your browser.","longDescription":"Drop in an image and download a vertically mirrored (top-bottom flipped) version. The flip is lossless: pixels are re-mapped without resampling, so quality is preserved exactly. Useful for reflections, design mockups, and upside-down sourcing. Output format matches the input where possible, defaulting to PNG. Everything runs locally in your browser.","category":"image","categoryName":"Image","keywords":["flip image vertically","vertical flip image","flip image online","image vertical mirror","flip photo vertically","upside down image","vertical mirror image","free image flipper","online vertical flip","browser image flip","top bottom flip image","image flip vertical free"],"url":"https://toolsly.tools/image-flip-vertical","manifestUrl":"https://toolsly.tools/image-flip-vertical/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp",".avif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/avif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/image-flip-vertical","api":null}},{"kind":"converter","slug":"image-hue-rotate","name":"Image Hue Rotator","description":"Rotate the colors of an image around the color wheel — runs in your browser.","longDescription":"Drop in an image and download a hue-rotated copy. The image is converted to HSL color space, the hue is rotated by the number of degrees you choose (0–360), then converted back to RGB. 90° gives surreal cyans, 180° produces a complementary-color flip, 270° turns greens to magentas — great for psychedelic effects and accessibility checks. Output format matches the input where possible, defaulting to PNG. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["image hue rotate","image hue shift","rotate image hue","hue rotate online","image hue tool","online hue rotator","free hue rotate","image color shift","photo hue rotate","hue rotation tool","image color rotator"],"url":"https://toolsly.tools/image-hue-rotate","manifestUrl":"https://toolsly.tools/image-hue-rotate/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".bmp"],"mimeTypes":["image/png","image/jpeg","image/webp","image/bmp"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"number","key":"degrees","label":"Hue rotation (degrees)","defaultValue":90,"min":0,"max":360,"step":1,"help":"0 means no change. 180° gives complementary colors."}],"invocation":{"webUi":"https://toolsly.tools/image-hue-rotate","api":null}},{"kind":"converter","slug":"image-invert-colors","name":"Invert Image Colors","description":"Invert (negate) the colors of any image — runs entirely in your browser.","longDescription":"Drop in an image and download a color-inverted (negative) version. Each pixel's R, G, and B channels are replaced with 255-channel — turning whites into blacks, reds into cyans, and so on. Useful for film-negative looks, dark-mode mockups, accessibility checks, and digital art. Output format matches the input where possible, defaulting to PNG. Everything runs locally in your browser.","category":"image","categoryName":"Image","keywords":["invert image colors","image color invert","negative image converter","image negative online","invert colors online","color invert tool","free invert image tool","image inversion online","negate image colors","photo negative online","invert picture colors","online color inverter"],"url":"https://toolsly.tools/image-invert-colors","manifestUrl":"https://toolsly.tools/image-invert-colors/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp",".avif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/avif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/image-invert-colors","api":null}},{"kind":"converter","slug":"image-padding","name":"Image Padding (Add Border Around)","description":"Add solid-color padding around any image — runs entirely in your browser.","longDescription":"Drop in an image and download a copy with extra padding added around all four sides. Useful for breathing room around screenshots, social-media safe areas, or printing margins. Pick the padding thickness in pixels and a background color (white by default — choose transparent to keep the new pixels alpha-zero, which only PNG supports). Output is always PNG so the transparent option works correctly. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["image padding","add padding to image","image padding online","image margin tool","add border around image","image whitespace tool","image canvas extender","free image padding","online image padding","add white space to image","image background extender"],"url":"https://toolsly.tools/image-padding","manifestUrl":"https://toolsly.tools/image-padding/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".bmp"],"mimeTypes":["image/png","image/jpeg","image/webp","image/bmp"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"number","key":"padding","label":"Padding (px)","defaultValue":40,"min":0,"max":2000,"step":1,"help":"Padding added to all four sides."},{"type":"select","key":"color","label":"Padding color","defaultValue":"white","choices":[{"value":"white","label":"White"},{"value":"black","label":"Black"},{"value":"transparent","label":"Transparent (PNG only)"},{"value":"light-gray","label":"Light gray"}]}],"invocation":{"webUi":"https://toolsly.tools/image-padding","api":null}},{"kind":"converter","slug":"image-pixelate","name":"Image Pixelator","description":"Pixelate any image — drag the block size, runs in your browser.","longDescription":"Drop in an image and download a pixelated version. The image is divided into a grid of square blocks; each block is filled with the average color of its source pixels. Useful for retro game art, censoring faces or text, or stylized thumbnails. Bigger block sizes give chunkier results. Output format matches the input where possible, defaulting to PNG. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["image pixelate","pixelate image online","image pixelator","pixelate photo online","online pixelate tool","free image pixelate","pixel art generator","pixelate picture","image pixel filter","censor pixelate online","8-bit image filter"],"url":"https://toolsly.tools/image-pixelate","manifestUrl":"https://toolsly.tools/image-pixelate/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".bmp"],"mimeTypes":["image/png","image/jpeg","image/webp","image/bmp"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"number","key":"blockSize","label":"Block size (px)","defaultValue":12,"min":2,"max":64,"step":1,"help":"Bigger blocks = chunkier pixelation."}],"invocation":{"webUi":"https://toolsly.tools/image-pixelate","api":null}},{"kind":"converter","slug":"image-resize","name":"Resize Image","description":"Resize images by pixels or percent — keep aspect ratio, runs entirely in your browser.","longDescription":"Drop in an image and resize it by exact pixels or by percentage. Keep aspect ratio on (recommended) and the unspecified dimension is derived automatically — or set it explicitly to fit-within bounds. The canvas uses high-quality (browser-native bilinear/bicubic) image smoothing for the resample. Output format matches the input where possible, defaulting to PNG. Everything runs locally in your browser.","category":"image","categoryName":"Image","keywords":["resize image online","resize image free","image resizer online","resize picture online","online image resizer","resize jpg online","resize png online","image resize tool","scale image online","shrink image online","enlarge image online","browser image resizer"],"url":"https://toolsly.tools/image-resize","manifestUrl":"https://toolsly.tools/image-resize/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp",".avif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/avif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"select","key":"mode","label":"Mode","defaultValue":"pixels","choices":[{"value":"pixels","label":"Pixels"},{"value":"percent","label":"Percent"}]},{"type":"number","key":"width","label":"Width","defaultValue":800,"min":1,"step":1,"help":"Pixels mode: target width in px. Percent mode: width as % of original."},{"type":"number","key":"height","label":"Height (0 = auto)","defaultValue":0,"min":0,"step":1,"help":"Pixels mode only. 0 to derive from width while preserving aspect ratio."},{"type":"boolean","key":"keepAspectRatio","label":"Keep aspect ratio","defaultValue":true,"help":"When on, the image is scaled to fit within the requested bounds, preserving aspect."}],"invocation":{"webUi":"https://toolsly.tools/image-resize","api":null}},{"kind":"converter","slug":"image-rotate","name":"Rotate Image","description":"Rotate an image 90°, 180°, or 270° — lossless, runs entirely in your browser.","longDescription":"Drop in an image and rotate it 90° clockwise, 180°, or 90° counterclockwise. Quarter-turn rotations are lossless: pixels are re-mapped without resampling. The canvas dimensions are swapped for 90/270, so the rotated image keeps its full resolution with no cropping. Output format matches the input where possible, defaulting to PNG. Arbitrary-angle rotation (e.g. 45°) is on the roadmap. Everything runs locally in your browser.","category":"image","categoryName":"Image","keywords":["rotate image online","rotate picture online","image rotate tool","free image rotator","rotate jpg online","rotate png online","rotate image 90 degrees","rotate image 180 degrees","online image rotator","browser image rotate","rotate photo online free","image orientation tool"],"url":"https://toolsly.tools/image-rotate","manifestUrl":"https://toolsly.tools/image-rotate/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp",".avif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/avif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"select","key":"angle","label":"Angle","defaultValue":"90","choices":[{"value":"90","label":"90° clockwise"},{"value":"180","label":"180°"},{"value":"270","label":"90° counterclockwise"}]}],"invocation":{"webUi":"https://toolsly.tools/image-rotate","api":null}},{"kind":"converter","slug":"image-saturation","name":"Image Saturation Adjuster","description":"Boost or mute image saturation — drag the amount, runs in your browser.","longDescription":"Drop in an image and download a more or less saturated version. The image is converted into HSL color space, the saturation channel is scaled by the amount you set, then converted back to RGB. Positive amounts make colors pop; -100 produces a grayscale image. Output format matches the input where possible, defaulting to PNG. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["image saturation","image saturation adjuster","adjust image saturation","increase image saturation","decrease image saturation","desaturate image online","saturate image online","online image saturation","free image saturation","photo saturation online","image saturation editor"],"url":"https://toolsly.tools/image-saturation","manifestUrl":"https://toolsly.tools/image-saturation/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".bmp"],"mimeTypes":["image/png","image/jpeg","image/webp","image/bmp"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"number","key":"amount","label":"Saturation amount","defaultValue":30,"min":-100,"max":100,"step":1,"help":"Negative desaturates (toward gray), positive saturates. -100 = grayscale."}],"invocation":{"webUi":"https://toolsly.tools/image-saturation","api":null}},{"kind":"converter","slug":"image-sharpen","name":"Image Sharpener","description":"Sharpen a blurry image — 3×3 convolution kernel, runs in your browser.","longDescription":"Drop in a slightly soft image and download a sharper version. Applies a classic 3×3 sharpening convolution kernel ([0,-1,0; -1,5,-1; 0,-1,0]) blended with the original by the strength you choose. Strength 0 leaves the image unchanged; 1 applies the full sharpening filter. Output is always PNG so transparency is preserved. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["image sharpen","sharpen image online","image sharpener","sharpen blurry image","image sharpening tool","online image sharpener","free image sharpener","photo sharpener online","sharpen photo","image clarity tool","sharpen picture"],"url":"https://toolsly.tools/image-sharpen","manifestUrl":"https://toolsly.tools/image-sharpen/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".bmp"],"mimeTypes":["image/png","image/jpeg","image/webp","image/bmp"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"number","key":"strength","label":"Strength","defaultValue":1,"min":0,"max":1,"step":0.05,"help":"0 = no change. 1 = full kernel applied. Try 0.5 for a gentle effect."}],"invocation":{"webUi":"https://toolsly.tools/image-sharpen","api":null}},{"kind":"converter","slug":"image-text-overlay","name":"Add Text to Image (Meme Maker)","description":"Slap top + bottom caption text on any image — classic meme style, runs in your browser.","longDescription":"Add bold caption text to an image — the classic impact-on-top-and-bottom meme look, or anything else you can configure. Pick the font, size, color, stroke (outline) color and width, then enter a top caption, bottom caption, or both. Long captions wrap automatically by word. Output is a PNG so transparency and stroke edges stay crisp. Everything runs locally on canvas; the image never leaves your device.","category":"image","categoryName":"Image","keywords":["meme maker","meme generator","add text to image","image caption generator","image text overlay","photo caption tool","make a meme online","free meme generator","online meme maker","caption image online","add caption to picture","impact text on image","text on photo online"],"url":"https://toolsly.tools/image-text-overlay","manifestUrl":"https://toolsly.tools/image-text-overlay/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".bmp",".gif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/bmp","image/gif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"text","key":"topText","label":"Top text","defaultValue":"","placeholder":"(optional) text across the top"},{"type":"text","key":"bottomText","label":"Bottom text","defaultValue":"","placeholder":"(optional) text across the bottom"},{"type":"number","key":"fontSize","label":"Font size (px)","defaultValue":60,"min":12,"max":200,"step":2,"help":"Pixel height of the font. Bigger source images need bigger text."},{"type":"select","key":"fontColor","label":"Text color","defaultValue":"white","choices":[{"value":"white","label":"White"},{"value":"black","label":"Black"},{"value":"yellow","label":"Yellow"},{"value":"red","label":"Red"}]},{"type":"select","key":"strokeColor","label":"Outline color","defaultValue":"black","choices":[{"value":"black","label":"Black"},{"value":"white","label":"White"},{"value":"none","label":"None"}]},{"type":"number","key":"strokeWidth","label":"Outline width (px)","defaultValue":4,"min":0,"max":10,"step":1},{"type":"select","key":"fontFamily","label":"Font","defaultValue":"impact","choices":[{"value":"impact","label":"Impact (classic meme)"},{"value":"arial","label":"Arial"},{"value":"helvetica","label":"Helvetica"},{"value":"times","label":"Times New Roman"}]}],"invocation":{"webUi":"https://toolsly.tools/image-text-overlay","api":null}},{"kind":"converter","slug":"image-to-base64","name":"Image to Base64","description":"Convert an image to a base64 data URL — paste it directly into HTML, CSS, or JSON.","longDescription":"Drop in an image (PNG, JPG, WebP, GIF, BMP, SVG, AVIF) and download a .txt file containing a base64 data URL. Data URLs let you inline an image directly into HTML (img src), CSS (background-image: url(...)), or JSON payloads — no separate file fetch needed. The output preserves the original MIME type. Everything runs locally in your browser; your image never gets uploaded.","category":"image","categoryName":"Image","keywords":["image to base64","convert image to base64","image base64 encoder","png to base64","jpg to base64","image to data url","base64 image converter","image to base64 online","image to base64 free","encode image base64","data url generator","inline image base64"],"url":"https://toolsly.tools/image-to-base64","manifestUrl":"https://toolsly.tools/image-to-base64/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp",".svg",".avif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/svg+xml","image/avif"]},"output":{"type":"file","extension":".txt","mimeType":"text/plain"},"options":[],"invocation":{"webUi":"https://toolsly.tools/image-to-base64","api":null}},{"kind":"converter","slug":"image-to-bw","name":"Image to Black & White","description":"Convert an image to pure black & white using a threshold — runs in your browser.","longDescription":"Drop in any image and download a pure two-tone black & white version (no grays). Each pixel's perceptual brightness is compared to your threshold (0–255, default 128); anything brighter becomes white, anything darker becomes black. Great for high-contrast art, line work, sketches, and screen-print prep. Output format matches the input where possible, defaulting to PNG. Everything runs locally in your browser.","category":"image","categoryName":"Image","keywords":["black and white image converter","image to black and white","convert image to bw","image threshold filter","bw image online","two tone image","black white image online","monochrome image converter","image to monochrome","image to black white online free","high contrast image converter","threshold image online"],"url":"https://toolsly.tools/image-to-bw","manifestUrl":"https://toolsly.tools/image-to-bw/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp",".avif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/avif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"number","key":"threshold","label":"Threshold","defaultValue":128,"min":0,"max":255,"step":1,"help":"Pixels brighter than this become white; darker pixels become black."}],"invocation":{"webUi":"https://toolsly.tools/image-to-bw","api":null}},{"kind":"converter","slug":"image-to-grayscale","name":"Image to Grayscale","description":"Convert any image to grayscale — pick the algorithm, runs entirely in your browser.","longDescription":"Drop in an image (PNG, JPG, WebP, GIF, BMP, AVIF) and download a grayscale version. Pick from four standard algorithms: Luminance (the perceptual default — closest to how the human eye weighs RGB channels), Average (a flat mean of R, G, B), Lightness (the midpoint of max and min channel — softer contrast), and Desaturation (HSL-style saturation removal). Output format matches the input where possible, defaulting to PNG. Everything runs locally in your browser.","category":"image","categoryName":"Image","keywords":["grayscale image online","convert image to grayscale","image to grayscale","grayscale converter","grayscale photo","make image grayscale","image to gray online","black and white photo converter","grayscale filter","convert color to grayscale","free grayscale image tool","online grayscale converter"],"url":"https://toolsly.tools/image-to-grayscale","manifestUrl":"https://toolsly.tools/image-to-grayscale/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp",".avif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/avif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"select","key":"algorithm","label":"Algorithm","defaultValue":"luminance","choices":[{"value":"luminance","label":"Luminance (recommended)"},{"value":"average","label":"Average"},{"value":"lightness","label":"Lightness"},{"value":"desaturation","label":"Desaturation"}],"help":"Luminance weights R/G/B perceptually (0.2126/0.7152/0.0722). Average is a plain mean. Lightness uses (max+min)/2. Desaturation removes HSL saturation."}],"invocation":{"webUi":"https://toolsly.tools/image-to-grayscale","api":null}},{"kind":"converter","slug":"image-to-sepia","name":"Image to Sepia","description":"Apply a classic sepia tone to any image — adjustable intensity, runs in your browser.","longDescription":"Drop in an image and download a warm sepia-toned version using the standard sepia matrix. Adjust intensity from 0% (original) to 100% (full sepia) to fine-tune the vintage look — useful for blending sepia into a more contemporary palette. Output format matches the input where possible, defaulting to PNG. Everything runs locally in your browser; your image never gets uploaded.","category":"image","categoryName":"Image","keywords":["sepia filter online","image to sepia","apply sepia tone","sepia photo converter","vintage photo filter","sepia image online","sepia tone generator","sepia filter free","old photo filter online","image sepia online","convert image to sepia","browser sepia tool"],"url":"https://toolsly.tools/image-to-sepia","manifestUrl":"https://toolsly.tools/image-to-sepia/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp",".avif"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp","image/avif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"number","key":"intensity","label":"Intensity (%)","defaultValue":100,"min":0,"max":100,"step":1,"help":"0 keeps the original, 100 is full sepia. Values in between blend the two."}],"invocation":{"webUi":"https://toolsly.tools/image-to-sepia","api":null}},{"kind":"converter","slug":"image-to-text","name":"Image to Text (OCR)","description":"Extract text from images using OCR — free online, runs in your browser.","longDescription":"Drop in an image and download the recognized text as a plain .txt file. We use Tesseract.js — a WebAssembly build of the open-source Tesseract OCR engine — so recognition happens entirely on your device and the image never leaves your browser. The first run downloads a small language model (~10–15 MB per language, cached after that). Quality depends heavily on the source: clean, high-resolution scans of printed text work best; handwriting, blurry photos, low-contrast screenshots, and very small fonts produce poor results. For non-Latin scripts, pick the matching language for far better accuracy.","category":"image","categoryName":"Image","keywords":["image to text","ocr online","ocr free","image to text converter","ocr image","extract text from image","online ocr","picture to text","image text extractor","scan to text","photo to text","free ocr online","ocr converter"],"url":"https://toolsly.tools/image-to-text","manifestUrl":"https://toolsly.tools/image-to-text/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".bmp"],"mimeTypes":["image/png","image/jpeg","image/webp","image/bmp"]},"output":{"type":"file","extension":".txt","mimeType":"text/plain"},"options":[{"type":"select","key":"language","label":"Language","defaultValue":"eng","choices":[{"value":"eng","label":"English"},{"value":"spa","label":"Spanish"},{"value":"fra","label":"French"},{"value":"deu","label":"German"},{"value":"chi_sim","label":"Chinese (Simplified)"},{"value":"jpn","label":"Japanese"},{"value":"ara","label":"Arabic"}],"help":"Pick the language that matches the text in your image. Models are downloaded on first use (~10–15 MB) and cached afterwards."}],"invocation":{"webUi":"https://toolsly.tools/image-to-text","api":null}},{"kind":"converter","slug":"images-to-pdf","name":"Images to PDF","description":"Combine PNG / JPG / WebP images into a single PDF — one image per page, in your browser.","longDescription":"Drop in one or more images (PNG, JPG/JPEG, WebP) and download a single PDF containing all of them, one image per page, in the order you selected them. Pages can match each image's natural size, or be fit to A4 / US Letter while preserving each image's aspect ratio. WebP files (and anything else the canvas can decode) are re-encoded to JPG inside the PDF for maximum reader compatibility. Everything runs locally — your images never leave your browser.","category":"document","categoryName":"Document","keywords":["images to pdf","image to pdf","convert images to pdf","combine images to pdf","merge images into pdf","jpg to pdf","png to pdf","webp to pdf","photos to pdf converter","multiple images to pdf","images to pdf online","images to pdf free"],"url":"https://toolsly.tools/images-to-pdf","manifestUrl":"https://toolsly.tools/images-to-pdf/tool.json","runsOn":"client","multiple":true,"batch":true,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp"],"mimeTypes":["image/png","image/jpeg","image/webp"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"select","key":"pageSize","label":"Page size","defaultValue":"match","choices":[{"value":"match","label":"Match each image"},{"value":"a4","label":"A4 (fit)"},{"value":"letter","label":"US Letter (fit)"}],"help":"Match keeps each page sized to the image. A4 / Letter fit each image into a standard page, preserving aspect ratio."}],"invocation":{"webUi":"https://toolsly.tools/images-to-pdf","api":null}},{"kind":"utility","slug":"iso3166-country","name":"ISO 3166 Country Lookup","description":"Look up a country by ISO 3166-1 alpha-2, alpha-3, numeric code, or by name fragment.","longDescription":"Bundles the full ISO 3166-1 country list — alpha-2 (e.g. US), alpha-3 (USA), and numeric (840) codes plus the official short name and region. Useful for filling country fields in payment data (issuer country, acquirer country, EMV tag 5F28 / 9F1A). Runs entirely in your browser.","category":"payment","categoryName":"Payment & cards","keywords":["iso 3166 lookup","country code lookup","iso 3166-1","alpha 2 country code","alpha 3 country code","country numeric code","iso country lookup online","iso country lookup free","country code to name","country code search","iso country finder","country iso code"],"badge":"Lookup","url":"https://toolsly.tools/iso3166-country","manifestUrl":"https://toolsly.tools/iso3166-country/tool.json","inputs":[{"type":"text","key":"query","label":"Code or name","placeholder":"US, USA, 840, or 'united'","help":"Accepts alpha-2, alpha-3, numeric (1-3 digits), or a name fragment."}],"outputs":[{"key":"alpha2","label":"Alpha-2"},{"key":"alpha3","label":"Alpha-3"},{"key":"numeric","label":"Numeric"},{"key":"name","label":"Name"},{"key":"region","label":"Region"}],"invocation":{"webUi":"https://toolsly.tools/iso3166-country","api":null}},{"kind":"utility","slug":"iso4217-currency","name":"ISO 4217 Currency Lookup","description":"Look up a currency by ISO 4217 code (alpha or numeric) or by name fragment.","longDescription":"Searches a curated list of ~70 major ISO 4217 currencies. Returns the three-letter code, three-digit numeric code, common symbol and minor-unit exponent (for amount formatting). Runs entirely in your browser.","category":"payment","categoryName":"Payment & cards","keywords":["iso 4217 lookup","currency code lookup","iso 4217 currency","currency code to name","currency numeric code","currency symbol lookup","iso currency code","iso 4217 lookup online","iso 4217 lookup free","currency minor units","find currency code","iso currency search"],"badge":"Lookup","url":"https://toolsly.tools/iso4217-currency","manifestUrl":"https://toolsly.tools/iso4217-currency/tool.json","inputs":[{"type":"text","key":"query","label":"Code or name","placeholder":"USD, 840, or 'euro'","help":"Accepts the 3-letter alpha code, 3-digit numeric code, or a name fragment."}],"outputs":[{"key":"code","label":"Alpha code"},{"key":"numeric","label":"Numeric code"},{"key":"name","label":"Name"},{"key":"symbol","label":"Symbol"},{"key":"minorUnit","label":"Minor unit exponent"}],"invocation":{"webUi":"https://toolsly.tools/iso4217-currency","api":null}},{"kind":"utility","slug":"iso639-language-lookup","name":"ISO 639 Language Lookup","description":"Look up a language by ISO 639-1 alpha-2, ISO 639-2/3 alpha-3, or by name fragment.","longDescription":"Searches a curated list of ~150 widely-spoken languages — the top ~100 by speakers plus all six UN official languages and major regional languages. Returns the ISO 639-1 alpha-2 code, ISO 639-2/T (terminological) alpha-3 code, the ISO 639-2/B (bibliographic) variant when it differs, the English name, the native (endonym) name, the language family and writing direction (LTR / RTL / TTB). Useful for product engineers building locale pickers, content teams tagging translations, and i18n developers validating BCP-47 tags. Match strategy: 2 chars → alpha-2 exact; 3 chars → alpha-3 exact (terminological or bibliographic); longer → case-insensitive substring on name or nativeName. Runs entirely in your browser — your data is never sent anywhere.","category":"payment","categoryName":"Payment & cards","keywords":["iso 639 language codes","language code lookup","iso 639-1","iso 639-2","iso 639-3","language code to name","alpha 2 language code","alpha 3 language code","language family lookup","language direction rtl ltr","language native name","language code search","i18n language code"],"badge":"Lookup","url":"https://toolsly.tools/iso639-language-lookup","manifestUrl":"https://toolsly.tools/iso639-language-lookup/tool.json","inputs":[{"type":"text","key":"query","label":"Code or name","placeholder":"en, eng, or 'spanish'","help":"Accepts alpha-2 (ISO 639-1), alpha-3 (ISO 639-2/T or 639-3), or a name fragment."}],"outputs":[{"key":"alpha2","label":"Alpha-2 (ISO 639-1)"},{"key":"alpha3","label":"Alpha-3 (terminological)"},{"key":"bibliographic","label":"Alpha-3 (bibliographic)"},{"key":"name","label":"Name"},{"key":"nativeName","label":"Native name"},{"key":"family","label":"Language family"},{"key":"direction","label":"Writing direction"}],"invocation":{"webUi":"https://toolsly.tools/iso639-language-lookup","api":null}},{"kind":"converter","slug":"jpg-cropper","name":"JPG Cropper","description":"Crop JPG / JPEG photos in your browser — adjustable quality, no upload required.","longDescription":"Drop in a JPG (or JPEG), drag the crop selection, and download the result. JPG is lossy, so you can tune the output quality between 1 and 100. Conversion runs locally in your browser — your photo never leaves your device.","category":"image","categoryName":"Image","keywords":["jpg cropper","jpeg cropper","crop jpg online","crop jpeg online","jpg crop tool","online jpg cropper","crop jpg free","free jpeg cropper","crop jpg image","jpeg crop online","trim jpg","browser jpg cropper"],"url":"https://toolsly.tools/jpg-cropper","manifestUrl":"https://toolsly.tools/jpg-cropper/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".jpg",".jpeg"],"mimeTypes":["image/jpeg"]},"output":{"type":"file","extension":".jpg","mimeType":"image/jpeg"},"options":[{"type":"number","key":"quality","label":"JPG quality","defaultValue":92,"min":1,"max":100,"step":1,"help":"Higher = larger file, better visual quality."}],"invocation":{"webUi":"https://toolsly.tools/jpg-cropper","api":null}},{"kind":"converter","slug":"jpg-to-avif","name":"JPG to AVIF","description":"Convert JPG (JPEG) images to AVIF — next-gen compression, runs in your browser.","longDescription":"Drop in a JPG or JPEG and download an AVIF. AVIF typically shrinks the file by 40–50% versus JPG at the same visual quality. Note: AVIF encoding requires a recent Chromium-based browser (Chrome, Edge, Brave, Opera). Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["jpg to avif","jpeg to avif","convert jpg to avif","jpg to avif converter","jpg to avif online","jpg to avif free","jpg to avif online free","change jpg to avif","jpeg to avif converter","free jpg to avif","online jpg to avif converter"],"url":"https://toolsly.tools/jpg-to-avif","manifestUrl":"https://toolsly.tools/jpg-to-avif/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".jpg",".jpeg"],"mimeTypes":["image/jpeg"]},"output":{"type":"file","extension":".avif","mimeType":"image/avif"},"options":[{"type":"number","key":"quality","label":"AVIF quality","defaultValue":75,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality. AVIF is efficient — 70–80 looks great."}],"invocation":{"webUi":"https://toolsly.tools/jpg-to-avif","api":null}},{"kind":"converter","slug":"jpg-to-ico","name":"JPG to ICO","description":"Convert a JPG photo into a Windows ICO favicon — pick the icon size, runs in your browser.","longDescription":"Drop in a JPG (or JPEG) and download a Windows ICO file you can use as a favicon or app icon. The source is decoded, resized to a square at the size you pick (aspect ratio preserved with letterboxing), re-encoded as PNG, and embedded inside an ICO container. JPGs have no transparency, so you'll get solid edges — that's expected. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["jpg to ico","jpeg to ico","convert jpg to ico","jpg to ico converter","jpg to ico online","jpg to ico free","favicon generator","make favicon from jpg","jpeg favicon","online jpg to ico converter","free jpg to ico"],"url":"https://toolsly.tools/jpg-to-ico","manifestUrl":"https://toolsly.tools/jpg-to-ico/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".jpg",".jpeg"],"mimeTypes":["image/jpeg"]},"output":{"type":"file","extension":".ico","mimeType":"image/x-icon"},"options":[{"type":"select","key":"size","label":"Icon size","defaultValue":"64","choices":[{"value":"16","label":"16 × 16"},{"value":"32","label":"32 × 32"},{"value":"48","label":"48 × 48"},{"value":"64","label":"64 × 64"},{"value":"128","label":"128 × 128"},{"value":"256","label":"256 × 256"}],"help":"Most favicons use 32 or 64. Pick 256 for high-res desktop icons."}],"invocation":{"webUi":"https://toolsly.tools/jpg-to-ico","api":null}},{"kind":"converter","slug":"jpg-to-pdf","name":"JPG to PDF","description":"Convert a JPG photo into a single-page PDF — fit-to-page, runs in your browser.","longDescription":"Drop in a JPG (or JPEG) and download a single-page PDF with the photo centered on the page. The image is fit to the page with a small margin, preserving aspect ratio. Choose A4, US Letter, or US Legal; orientation defaults to whichever matches the photo aspect. Useful for emailing scanned documents, attaching photos to reports, or printable handouts. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["jpg to pdf","jpeg to pdf","convert jpg to pdf","jpg to pdf converter","jpg to pdf online","jpg to pdf free","jpg to pdf online free","image to pdf","jpeg image to pdf","free jpg to pdf","online jpg to pdf converter","photo to pdf"],"url":"https://toolsly.tools/jpg-to-pdf","manifestUrl":"https://toolsly.tools/jpg-to-pdf/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".jpg",".jpeg"],"mimeTypes":["image/jpeg"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"select","key":"pageSize","label":"Page size","defaultValue":"a4","choices":[{"value":"a4","label":"A4"},{"value":"letter","label":"US Letter"},{"value":"legal","label":"US Legal"}]},{"type":"select","key":"orientation","label":"Orientation","defaultValue":"auto","choices":[{"value":"auto","label":"Auto (match image)"},{"value":"portrait","label":"Portrait"},{"value":"landscape","label":"Landscape"}]}],"invocation":{"webUi":"https://toolsly.tools/jpg-to-pdf","api":null}},{"kind":"converter","slug":"jpg-to-png","name":"JPG to PNG","description":"Convert JPG (JPEG) images to PNG — free, fast, fully client-side.","longDescription":"Drop in any JPG / JPEG file and download a PNG. PNG is lossless and supports transparency, but the source JPG won't gain any transparency it didn't have. Conversion runs in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["jpg to png","jpeg to png","convert jpg to png","jpg to png converter","jpg to png online","jpg to png free","change jpg to png","jpeg to png converter","free jpg to png","online jpg to png converter"],"url":"https://toolsly.tools/jpg-to-png","manifestUrl":"https://toolsly.tools/jpg-to-png/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".jpg",".jpeg"],"mimeTypes":["image/jpeg"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/jpg-to-png","api":null}},{"kind":"converter","slug":"jpg-to-webp","name":"JPG to WebP","description":"Convert JPG (JPEG) images to WebP — smaller files, same quality, runs in your browser.","longDescription":"Drop in a JPG or JPEG and download a WebP. WebP typically shrinks the file by 25–35% with no visible quality loss, which makes it ideal for the web. Conversion runs entirely in your browser using the Canvas API — files never leave your device.","category":"image","categoryName":"Image","keywords":["jpg to webp","jpeg to webp","convert jpg to webp","jpg to webp converter","jpg to webp online","jpg to webp free","jpg to webp online free","change jpg to webp","jpeg to webp converter","free jpg to webp","online jpg to webp converter"],"url":"https://toolsly.tools/jpg-to-webp","manifestUrl":"https://toolsly.tools/jpg-to-webp/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".jpg",".jpeg"],"mimeTypes":["image/jpeg"]},"output":{"type":"file","extension":".webp","mimeType":"image/webp"},"options":[{"type":"number","key":"quality","label":"WebP quality","defaultValue":90,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality. 90 is a good default."}],"invocation":{"webUi":"https://toolsly.tools/jpg-to-webp","api":null}},{"kind":"utility","slug":"js-beautifier","name":"JavaScript Beautifier","description":"Pretty-print JavaScript — consistent indentation and one statement per line for readable code.","longDescription":"Paste minified or compact JavaScript and reformat it with consistent indentation, line breaks and brace placement. Pick 2 spaces, 4 spaces or tabs to match your project style. Powered by js-beautify's js_beautify. Runs entirely in your browser — your source never leaves this page.","category":"dev","categoryName":"Dev","keywords":["javascript beautifier","js beautifier","javascript beautifier online","js formatter","format javascript online","pretty print javascript","js prettifier","unminify javascript","beautify js","js formatter free","online javascript beautifier","reformat javascript"],"badge":"Beautifier","url":"https://toolsly.tools/js-beautifier","manifestUrl":"https://toolsly.tools/js-beautifier/tool.json","inputs":[{"type":"text","key":"js","label":"JavaScript","placeholder":"function hello(name){console.log('hi '+name);}","multiline":true,"monospace":true},{"type":"select","key":"indent","label":"Indent","defaultValue":"2","choices":[{"value":"2","label":"2 spaces"},{"value":"4","label":"4 spaces"},{"value":"tab","label":"Tabs"}]}],"outputs":[{"key":"formatted","label":"Formatted JS","multiline":true},{"key":"originalSize","label":"Original size (chars)"},{"key":"formattedSize","label":"Formatted size (chars)"}],"invocation":{"webUi":"https://toolsly.tools/js-beautifier","api":null}},{"kind":"utility","slug":"js-minifier","name":"JavaScript Minifier","description":"Minify JavaScript with Terser — compress, mangle and ship the smallest possible bundle.","longDescription":"Paste any JavaScript or ES module and get a compressed, single-line version powered by Terser. Compression eliminates dead code and shortens expressions; mangling renames local identifiers to single letters for maximum size reduction. You can turn mangling off if you need stack traces with readable names. Runs entirely in your browser — your source never leaves this page.","category":"dev","categoryName":"Dev","keywords":["javascript minifier","js minifier","javascript minifier online","minify javascript","minify js online","compress javascript","js compressor","javascript optimizer","terser online","shrink javascript","online js minifier","js minify free"],"badge":"Minifier","url":"https://toolsly.tools/js-minifier","manifestUrl":"https://toolsly.tools/js-minifier/tool.json","inputs":[{"type":"text","key":"js","label":"JavaScript","placeholder":"function hello(name) {\n  console.log('hi ' + name);\n}","multiline":true,"monospace":true},{"type":"boolean","key":"mangle","label":"Mangle identifiers","defaultValue":true,"help":"Rename local variables to single letters for smaller output."}],"outputs":[{"key":"minified","label":"Minified JS","multiline":true},{"key":"originalSize","label":"Original size (chars)"},{"key":"minifiedSize","label":"Minified size (chars)"},{"key":"savings","label":"Saved"}],"invocation":{"webUi":"https://toolsly.tools/js-minifier","api":null}},{"kind":"utility","slug":"json-diff","name":"JSON Diff","description":"Compare two JSON documents and show added, removed and changed fields as a path-based tree.","longDescription":"Paste two JSON documents and see a structural diff between them. Output is a multiline list of changes keyed by JSON Pointer paths (RFC 6901 style) — added fields are prefixed with `+`, removed with `-` and changed with `~`. Useful for spotting drift between API responses, config files or test fixtures. Runs entirely in your browser — no uploads, free, online.","category":"text","categoryName":"Text & Encoding","keywords":["json diff","json diff online","json diff free","compare json","json compare","diff two json files","json comparison tool","json difference","json delta","find changes between json","json structural diff","json side by side"],"badge":"Diff","url":"https://toolsly.tools/json-diff","manifestUrl":"https://toolsly.tools/json-diff/tool.json","inputs":[{"type":"text","key":"a","label":"JSON A (original)","placeholder":"{\"a\": 1, \"b\": [1, 2]}","multiline":true,"monospace":true},{"type":"text","key":"b","label":"JSON B (modified)","placeholder":"{\"a\": 2, \"b\": [1, 2, 3]}","multiline":true,"monospace":true}],"outputs":[{"key":"diff","label":"Diff","multiline":true},{"key":"addedCount","label":"Added"},{"key":"removedCount","label":"Removed"},{"key":"changedCount","label":"Changed"}],"invocation":{"webUi":"https://toolsly.tools/json-diff","api":null}},{"kind":"utility","slug":"json-flatten","name":"JSON Flatten","description":"Flatten a nested JSON document to a single-level object with dot, underscore or bracket paths.","longDescription":"Paste a nested JSON object or array and produce a single-level (flat) object where each leaf value is keyed by its full path. Choose between dot-notation (`a.b.0`), underscore (`a_b_0`) or array-bracket (`a.b[0]`) styles. Useful for spreadsheets, env-var generation or quick diffs across structurally similar payloads. Runs entirely in your browser — free, online, no upload.","category":"text","categoryName":"Text & Encoding","keywords":["json flatten","flatten json","json to flat","json dot notation","json one level","flatten nested json","flat json","json flatten online","json flatten free","json to dotted keys","json bracket notation","json flatten tool"],"badge":"Transformer","url":"https://toolsly.tools/json-flatten","manifestUrl":"https://toolsly.tools/json-flatten/tool.json","inputs":[{"type":"text","key":"json","label":"JSON","placeholder":"{\"a\": {\"b\": {\"c\": [1, 2]}}}","multiline":true,"monospace":true},{"type":"select","key":"separator","label":"Separator","defaultValue":"dot","choices":[{"value":"dot","label":"Dot (a.b.0)"},{"value":"underscore","label":"Underscore (a_b_0)"},{"value":"bracket","label":"Bracket (a.b[0])"}]}],"outputs":[{"key":"flat","label":"Flat","multiline":true},{"key":"keyCount","label":"Keys"}],"invocation":{"webUi":"https://toolsly.tools/json-flatten","api":null}},{"kind":"utility","slug":"json-formatter","name":"JSON Formatter","description":"Pretty-print or minify any JSON document — validates structure and reports parse errors with position.","longDescription":"Paste any JSON and reformat it with 2-space, 4-space or tab indentation, or minify it to a single line. Invalid JSON is reported with a clear error message and the position the parser stopped at. Everything runs entirely in your browser — your data stays on this page.","category":"text","categoryName":"Text & Encoding","keywords":["json formatter","json formatter online","json formatter free","json beautifier","json prettifier","json pretty print","json minifier","minify json","format json","validate json","json validator","json parser online","json lint","json viewer"],"badge":"Formatter","url":"https://toolsly.tools/json-formatter","manifestUrl":"https://toolsly.tools/json-formatter/tool.json","inputs":[{"type":"text","key":"json","label":"JSON","placeholder":"{\"hello\":\"world\"}","multiline":true,"monospace":true},{"type":"select","key":"mode","label":"Output","defaultValue":"pretty2","choices":[{"value":"pretty2","label":"Pretty (2 spaces)"},{"value":"pretty4","label":"Pretty (4 spaces)"},{"value":"tab","label":"Pretty (tabs)"},{"value":"min","label":"Minified"}]}],"outputs":[{"key":"formatted","label":"Formatted","multiline":true},{"key":"originalSize","label":"Original size (chars)"},{"key":"formattedSize","label":"Formatted size (chars)"}],"invocation":{"webUi":"https://toolsly.tools/json-formatter","api":null}},{"kind":"utility","slug":"json-merge","name":"JSON Merge","description":"Deep-merge two JSON documents — choose how to handle conflicting keys and arrays.","longDescription":"Combine two JSON objects with a deep recursive merge. Choose whether the right or left side wins on conflicting scalars, and whether arrays at the same path should be concatenated or replaced. Useful for layering config files, applying overrides on top of defaults, or building composite payloads. Runs entirely in your browser — free, online, no upload.","category":"text","categoryName":"Text & Encoding","keywords":["json merge","json merge online","deep merge json","json combine","merge two json","json overlay","json config merge","json override","json deep merge tool","merge json arrays","json union","json combiner"],"badge":"Merger","url":"https://toolsly.tools/json-merge","manifestUrl":"https://toolsly.tools/json-merge/tool.json","inputs":[{"type":"text","key":"a","label":"JSON A (base / left)","placeholder":"{\"a\": 1, \"tags\": [\"x\"]}","multiline":true,"monospace":true},{"type":"text","key":"b","label":"JSON B (overlay / right)","placeholder":"{\"a\": 2, \"tags\": [\"y\"]}","multiline":true,"monospace":true},{"type":"select","key":"strategy","label":"Strategy","defaultValue":"right","choices":[{"value":"right","label":"Right wins (deep)"},{"value":"left","label":"Left wins (deep)"},{"value":"concat","label":"Concat arrays (right wins scalars)"},{"value":"replace","label":"Replace arrays (right wins scalars)"}]}],"outputs":[{"key":"merged","label":"Merged","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/json-merge","api":null}},{"kind":"utility","slug":"json-patch-apply","name":"JSON Patch Apply","description":"Apply an RFC 6902 JSON Patch to a JSON document — supports add, remove, replace, move, copy and test.","longDescription":"Paste a JSON document and a JSON Patch array (per RFC 6902) and apply each operation in order. Supports `add`, `remove`, `replace`, `move`, `copy` and `test`. On a failed `test` operation, the index of the failing op is reported. Useful for previewing the effect of a patch before persisting it, or debugging patch generation. Runs entirely in your browser — free, online, no upload.","category":"text","categoryName":"Text & Encoding","keywords":["json patch apply","apply json patch","rfc 6902 apply","json patch online","json patch executor","json patch runner","json patch test","json patch tool","patch json document","json mutation","json patch free","patch a json file"],"badge":"Patcher","url":"https://toolsly.tools/json-patch-apply","manifestUrl":"https://toolsly.tools/json-patch-apply/tool.json","inputs":[{"type":"text","key":"document","label":"Document","placeholder":"{\"a\": 1}","multiline":true,"monospace":true},{"type":"text","key":"patch","label":"Patch (array of operations)","placeholder":"[{\"op\": \"replace\", \"path\": \"/a\", \"value\": 2}]","multiline":true,"monospace":true}],"outputs":[{"key":"result","label":"Result","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/json-patch-apply","api":null}},{"kind":"utility","slug":"json-patch-generator","name":"JSON Patch Generator","description":"Generate an RFC 6902 JSON Patch describing the changes needed to turn one JSON document into another.","longDescription":"Paste a source (`from`) and target (`to`) JSON document and produce a JSON Patch array per RFC 6902. The patch is a sequence of `add`, `remove` and `replace` operations keyed by JSON Pointer paths that, when applied to `from`, will produce `to`. Useful for syncing state, building diff-based APIs, or auditing config drift. Runs entirely in your browser — free, online, no upload.","category":"text","categoryName":"Text & Encoding","keywords":["json patch generator","json patch online","rfc 6902","rfc6902","generate json patch","json patch diff","json patch create","json pointer diff","json patch tool","json patch free","json patch from diff","json patch builder"],"badge":"Generator","url":"https://toolsly.tools/json-patch-generator","manifestUrl":"https://toolsly.tools/json-patch-generator/tool.json","inputs":[{"type":"text","key":"from","label":"From (source)","placeholder":"{\"a\": 1}","multiline":true,"monospace":true},{"type":"text","key":"to","label":"To (target)","placeholder":"{\"a\": 2, \"b\": true}","multiline":true,"monospace":true}],"outputs":[{"key":"patch","label":"JSON Patch (RFC 6902)","multiline":true},{"key":"operationCount","label":"Operations"}],"invocation":{"webUi":"https://toolsly.tools/json-patch-generator","api":null}},{"kind":"utility","slug":"json-path-finder","name":"JSONPath Finder","description":"Query a JSON document with a JSONPath expression — supports $, ., [n], [*], ..key and [?(@.field op value)] filters.","longDescription":"Paste any JSON and run a JSONPath query against it. The supported subset covers the common cases: `$` for the root, `.key` and `[\"key\"]` for child access, `[index]` (negative allowed) and `[*]` for array elements, `..key` for recursive descent, and filter expressions like `[?(@.price < 10)]` with ==, !=, <, >, <=, >=. Matches are returned as a JSON array. Useful for exploring large API responses or extracting data points without writing code. Runs entirely in your browser — free, online, no upload.","category":"text","categoryName":"Text & Encoding","keywords":["jsonpath","jsonpath tester","jsonpath finder","json query","json path online","json path free","json xpath","query json","extract from json","json filter expression","jsonpath evaluator","jsonpath playground"],"badge":"Query","url":"https://toolsly.tools/json-path-finder","manifestUrl":"https://toolsly.tools/json-path-finder/tool.json","inputs":[{"type":"text","key":"json","label":"JSON","placeholder":"{\"store\": {\"book\": [{\"title\": \"A\", \"price\": 5}, {\"title\": \"B\", \"price\": 12}]}}","multiline":true,"monospace":true},{"type":"text","key":"path","label":"JSONPath","placeholder":"$.store.book[?(@.price < 10)].title","monospace":true}],"outputs":[{"key":"matches","label":"Matches","multiline":true},{"key":"matchCount","label":"Match count"}],"invocation":{"webUi":"https://toolsly.tools/json-path-finder","api":null}},{"kind":"utility","slug":"json-schema-generator","name":"JSON Schema Generator","description":"Infer a JSON Schema (Draft-07) from any JSON document — nested objects and array element types are inferred recursively.","longDescription":"Paste any JSON object or array and generate a matching JSON Schema (Draft-07). Nested objects become inline `object` schemas with `properties` and `required`; arrays with mixed element types produce a `oneOf` union. All discovered object properties are marked required by default — flip the `All optional` switch to mark them optional instead. Useful for bootstrapping validation rules around an existing API response. Runs entirely in your browser — free, online, no upload.","category":"text","categoryName":"Text & Encoding","keywords":["json schema generator","generate json schema","json schema from json","infer json schema","draft-07 schema","json schema online","json schema free","json validation schema","json schema tool","openapi schema from json","json schema builder","automatic json schema"],"badge":"Generator","url":"https://toolsly.tools/json-schema-generator","manifestUrl":"https://toolsly.tools/json-schema-generator/tool.json","inputs":[{"type":"text","key":"json","label":"JSON","placeholder":"{\"name\": \"Ada\", \"age\": 36}","multiline":true,"monospace":true},{"type":"boolean","key":"allOptional","label":"All properties optional","defaultValue":false,"help":"If on, no properties are added to `required`."}],"outputs":[{"key":"schema","label":"JSON Schema","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/json-schema-generator","api":null}},{"kind":"utility","slug":"json-sort-keys","name":"JSON Sort Keys","description":"Sort the keys of a JSON object alphabetically — recursively, case-insensitively, or with numeric awareness.","longDescription":"Paste any JSON and reorder its object keys. By default the sort is applied recursively across all nested objects and pretty-printed. Optionally make it case-insensitive, sort descending, or enable numeric-aware ordering so that `item2` sorts before `item10` (via Intl.Collator). Sorted JSON is useful for stable diffs, lockfile comparisons or canonical hashing. Runs entirely in your browser — free, online, no upload.","category":"text","categoryName":"Text & Encoding","keywords":["json sort keys","sort json keys","alphabetize json","json canonical","json key sorter","json key ordering","json sort online","json sort free","json stable order","json normalize keys","sort json alphabetically","json reorder keys"],"badge":"Transformer","url":"https://toolsly.tools/json-sort-keys","manifestUrl":"https://toolsly.tools/json-sort-keys/tool.json","inputs":[{"type":"text","key":"json","label":"JSON","placeholder":"{\"b\": 1, \"a\": 2}","multiline":true,"monospace":true},{"type":"boolean","key":"recursive","label":"Recursive (sort nested objects)","defaultValue":true},{"type":"select","key":"direction","label":"Direction","defaultValue":"asc","choices":[{"value":"asc","label":"Ascending"},{"value":"desc","label":"Descending"}]},{"type":"boolean","key":"caseInsensitive","label":"Case-insensitive","defaultValue":false},{"type":"boolean","key":"numericAware","label":"Numeric-aware (item2 < item10)","defaultValue":false}],"outputs":[{"key":"sorted","label":"Sorted","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/json-sort-keys","api":null}},{"kind":"converter","slug":"json-to-csv","name":"JSON to CSV","description":"Convert a JSON array (or object) into a CSV spreadsheet — free online, no upload.","longDescription":"Drop in a .json file and download a CSV. The input should be a top-level array of flat objects — one CSV row per array element. A single object is automatically wrapped in a one-element array. Headers are derived from the union of object keys. Conversion runs entirely in your browser; your file never leaves your device.","category":"document","categoryName":"Document","keywords":["json to csv","convert json to csv","json to csv converter","json to csv online","json to csv free","change json to csv","json csv converter","free json to csv","online json to csv converter","json to csv online free","json array to csv","json to spreadsheet"],"url":"https://toolsly.tools/json-to-csv","manifestUrl":"https://toolsly.tools/json-to-csv/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".json"],"mimeTypes":["application/json","text/json","text/plain",""]},"output":{"type":"file","extension":".csv","mimeType":"text/csv"},"options":[],"invocation":{"webUi":"https://toolsly.tools/json-to-csv","api":null}},{"kind":"utility","slug":"json-to-go-struct","name":"JSON to Go Struct","description":"Generate Go structs with json tags from any JSON payload — nested objects become separate named types.","longDescription":"Paste any JSON object or array and generate matching Go structs. Field names are capitalized to be exported and the original keys are preserved in the `json:` tag. Nested objects are extracted into their own top-level structs, mixed-type or null fields fall back to `interface{}`. Arrays of objects produce a `[]Struct` slice, with element type inferred from the first object. Runs entirely in your browser — free, online, no upload.","category":"text","categoryName":"Text & Encoding","keywords":["json to go","json to go struct","json to golang struct","go struct generator","json to golang","go struct from json","json struct tags","json to go online","json to go free","go struct codegen","infer go types from json","json marshal struct"],"badge":"Generator","url":"https://toolsly.tools/json-to-go-struct","manifestUrl":"https://toolsly.tools/json-to-go-struct/tool.json","inputs":[{"type":"text","key":"json","label":"JSON","placeholder":"{\"name\": \"Ada\", \"age\": 36, \"tags\": [\"math\"]}","multiline":true,"monospace":true},{"type":"text","key":"rootName","label":"Root struct name","defaultValue":"Root"}],"outputs":[{"key":"code","label":"Go","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/json-to-go-struct","api":null}},{"kind":"converter","slug":"json-to-html","name":"JSON to HTML","description":"Pretty-print JSON inside a styled, syntax-highlighted HTML document — free online, no upload.","longDescription":"Drop in a .json file (or paste it) and download a complete .html document with the data pretty-printed and lightly syntax-highlighted (strings, numbers, booleans, null, and object keys get distinct colors). Useful for sharing API responses, config dumps or fixtures in a way that's readable in any browser. Indentation is 2 spaces. Conversion runs entirely in your browser.","category":"document","categoryName":"Document","keywords":["json to html","convert json to html","json to html converter","json viewer html","json pretty print html","json to html online free","free json to html","json syntax highlighter","json highlighter html","json to webpage","online json to html converter","json formatter html"],"url":"https://toolsly.tools/json-to-html","manifestUrl":"https://toolsly.tools/json-to-html/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".json"],"mimeTypes":["application/json","text/json","text/plain",""]},"output":{"type":"file","extension":".html","mimeType":"text/html"},"options":[],"invocation":{"webUi":"https://toolsly.tools/json-to-html","api":null}},{"kind":"utility","slug":"json-to-python-class","name":"JSON to Python Class","description":"Generate Python @dataclass, pydantic BaseModel or TypedDict definitions from any JSON payload.","longDescription":"Paste any JSON object or array and generate matching Python classes. Choose between standard library `@dataclass`, `pydantic.BaseModel`, or `typing.TypedDict`. Type hints use `str`, `int`, `float`, `bool`, `Optional[X]`, `List[X]` and `Dict[str, Any]`. Nested objects become separate named classes. Field names are sanitized to snake_case; the original JSON key is preserved via an alias where the style supports it. Runs entirely in your browser — free, online, no upload.","category":"text","categoryName":"Text & Encoding","keywords":["json to python","json to python class","json to dataclass","json to pydantic","json to typeddict","json to pydantic model","python class from json","pydantic generator","json to python types","json to python online","json to python free","json codegen python","infer python types from json"],"badge":"Generator","url":"https://toolsly.tools/json-to-python-class","manifestUrl":"https://toolsly.tools/json-to-python-class/tool.json","inputs":[{"type":"text","key":"json","label":"JSON","placeholder":"{\"name\": \"Ada\", \"age\": 36}","multiline":true,"monospace":true},{"type":"text","key":"rootName","label":"Root class name","defaultValue":"Root"},{"type":"select","key":"style","label":"Style","defaultValue":"dataclass","choices":[{"value":"dataclass","label":"@dataclass"},{"value":"pydantic","label":"pydantic BaseModel"},{"value":"typeddict","label":"TypedDict"}]}],"outputs":[{"key":"code","label":"Python","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/json-to-python-class","api":null}},{"kind":"utility","slug":"json-to-rust-struct","name":"JSON to Rust Struct","description":"Generate Rust structs with serde derives from any JSON payload — fields auto-renamed to snake_case.","longDescription":"Paste any JSON object or array and generate matching Rust structs deriving `Serialize`, `Deserialize`, and `Debug` from the `serde` crate. Field names are converted to snake_case, with `#[serde(rename = \"originalKey\")]` added when the original key differs. Nested objects become their own top-level structs and arrays of objects become `Vec<Struct>`. Heterogeneous arrays and null fields fall back to `serde_json::Value`. Runs entirely in your browser — free, online, no upload.","category":"text","categoryName":"Text & Encoding","keywords":["json to rust","json to rust struct","rust struct generator","json to serde","serde struct from json","rust struct from json","json to rust online","json to rust free","rust codegen json","infer rust types from json","json to serde struct","rust serialize deserialize"],"badge":"Generator","url":"https://toolsly.tools/json-to-rust-struct","manifestUrl":"https://toolsly.tools/json-to-rust-struct/tool.json","inputs":[{"type":"text","key":"json","label":"JSON","placeholder":"{\"name\": \"Ada\", \"age\": 36}","multiline":true,"monospace":true},{"type":"text","key":"rootName","label":"Root struct name","defaultValue":"Root"}],"outputs":[{"key":"code","label":"Rust","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/json-to-rust-struct","api":null}},{"kind":"utility","slug":"json-to-typescript","name":"JSON to TypeScript","description":"Infer TypeScript interfaces from any JSON payload — nested objects get their own named interface.","longDescription":"Paste any JSON object or array and generate matching TypeScript interfaces. Nested objects are extracted into separate named interfaces; mixed-type arrays produce a union. Useful for typing API responses without hand-writing the boilerplate. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["json to typescript","json to ts","json to typescript interface","ts type generator","typescript interface generator","infer types from json","json to types","json schema to typescript","json to typescript online","json to typescript free","auto generate ts types","api response types","typescript codegen"],"badge":"Generator","url":"https://toolsly.tools/json-to-typescript","manifestUrl":"https://toolsly.tools/json-to-typescript/tool.json","inputs":[{"type":"text","key":"json","label":"JSON","placeholder":"{\"name\": \"Ada\", \"age\": 36, \"tags\": [\"math\", \"engine\"]}","multiline":true,"monospace":true},{"type":"text","key":"rootName","label":"Root interface name","defaultValue":"Root"}],"outputs":[{"key":"typescript","label":"TypeScript","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/json-to-typescript","api":null}},{"kind":"converter","slug":"json-to-xlsx","name":"JSON to XLSX","description":"Convert a JSON file into an Excel .xlsx workbook — free online, no upload.","longDescription":"Drop in (or paste) a .json file and download a real Excel .xlsx workbook. An array of flat objects becomes a sheet whose headers are the union of object keys (one row per object). An array of arrays becomes a sheet whose rows are the inner arrays — the first inner array is treated as a header row when the option is on. A single object is automatically wrapped in a one-element array. Conversion runs entirely in your browser — your data never leaves your device.","category":"document","categoryName":"Document","keywords":["json to xlsx","json to xlsx online","json to xlsx converter","json to xlsx free","json to excel","json to excel online","json to excel converter","convert json to xlsx","convert json to excel","json array to excel","json to spreadsheet","json to xls"],"url":"https://toolsly.tools/json-to-xlsx","manifestUrl":"https://toolsly.tools/json-to-xlsx/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".json"],"mimeTypes":["application/json","text/json","text/plain",""]},"output":{"type":"file","extension":".xlsx","mimeType":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},"options":[{"type":"boolean","key":"header","label":"First row is a header","defaultValue":true,"help":"Only used when the JSON is an array of arrays. When on, the first inner array becomes the header row."}],"invocation":{"webUi":"https://toolsly.tools/json-to-xlsx","api":null}},{"kind":"converter","slug":"json-to-xml","name":"JSON to XML","description":"Convert JSON to XML — free online, no upload.","longDescription":"Drop in a .json file and download an XML document. Objects become elements, arrays become repeated sibling elements, and primitives become element text. If the top-level JSON value isn't a single-keyed object (i.e. it's an array, a primitive, or has multiple keys), the entire structure is wrapped under a `<root>` element so the output is well-formed. Indentation is 2 spaces. Runs entirely in your browser — your file never leaves your device.","category":"document","categoryName":"Document","keywords":["json to xml","convert json to xml","json to xml converter","json to xml online","json to xml free","change json to xml","json xml converter","free json to xml","online json to xml converter","json to xml online free","json xml conversion","json to xml document"],"url":"https://toolsly.tools/json-to-xml","manifestUrl":"https://toolsly.tools/json-to-xml/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".json"],"mimeTypes":["application/json","text/json","text/plain",""]},"output":{"type":"file","extension":".xml","mimeType":"application/xml"},"options":[],"invocation":{"webUi":"https://toolsly.tools/json-to-xml","api":null}},{"kind":"converter","slug":"json-to-yaml","name":"JSON to YAML","description":"Convert JSON to YAML — free online, no upload.","longDescription":"Drop in a .json file and download a YAML representation. Nested structures and arrays are preserved, strings are quoted only when required, and lines aren't wrapped (so long URLs and tokens stay on one line). Runs entirely in your browser — your file never leaves your device.","category":"document","categoryName":"Document","keywords":["json to yaml","json to yml","convert json to yaml","json to yaml converter","json to yaml online","json to yaml free","change json to yaml","json yaml converter","free json to yaml","online json to yaml converter","json to yaml online free","json yml converter"],"url":"https://toolsly.tools/json-to-yaml","manifestUrl":"https://toolsly.tools/json-to-yaml/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".json"],"mimeTypes":["application/json","text/json","text/plain",""]},"output":{"type":"file","extension":".yaml","mimeType":"text/yaml"},"options":[],"invocation":{"webUi":"https://toolsly.tools/json-to-yaml","api":null}},{"kind":"utility","slug":"json-unflatten","name":"JSON Unflatten","description":"Expand a flat dot/bracket-keyed object back into nested JSON — numeric keys become array indices.","longDescription":"The inverse of JSON Flatten. Paste a flat JSON object whose keys use dot-notation (`a.b.0`) or array brackets (`a.b[0]`) and rebuild the nested structure. Numeric segments are treated as array indices, everything else as object keys. Useful for parsing form-data style payloads, CSV → nested JSON, or undoing a flatten operation. Runs entirely in your browser — free, online, no upload.","category":"text","categoryName":"Text & Encoding","keywords":["json unflatten","unflatten json","flat json to nested","json from dot notation","expand flat json","nest json","json deepen","json unflatten online","json unflatten free","form data to json","json hierarchy builder","json restructure"],"badge":"Transformer","url":"https://toolsly.tools/json-unflatten","manifestUrl":"https://toolsly.tools/json-unflatten/tool.json","inputs":[{"type":"text","key":"json","label":"Flat JSON","placeholder":"{\"a.b.0\": \"x\", \"a.b.1\": \"y\"}","multiline":true,"monospace":true}],"outputs":[{"key":"nested","label":"Nested","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/json-unflatten","api":null}},{"kind":"utility","slug":"jwt-decoder","name":"JWT Decoder","description":"Decode a JSON Web Token to inspect its header and payload — runs locally, your token never leaves the browser.","longDescription":"Paste any JWT and instantly see its header, payload (claims), algorithm, and expiration. This tool only decodes the Base64URL segments — it does NOT verify the signature, which would require the issuer's secret or public key. Everything runs in your browser; tokens are never transmitted.","category":"text","categoryName":"Text & Encoding","keywords":["jwt decoder","jwt decode","jwt decoder online","jwt decoder free","decode jwt","json web token decoder","jwt parser","jwt viewer","jwt inspect","jwt payload decoder","jwt header decoder","jwt expiration check","jwt claims viewer"],"badge":"Decoder","url":"https://toolsly.tools/jwt-decoder","manifestUrl":"https://toolsly.tools/jwt-decoder/tool.json","inputs":[{"type":"text","key":"token","label":"JWT","placeholder":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.signature","multiline":true,"monospace":true,"help":"Three Base64URL-encoded segments separated by dots."}],"outputs":[{"key":"header","label":"Header","multiline":true},{"key":"payload","label":"Payload","multiline":true},{"key":"signature","label":"Signature (hex)"},{"key":"algorithm","label":"Algorithm"},{"key":"expiresAt","label":"Expires"}],"invocation":{"webUi":"https://toolsly.tools/jwt-decoder","api":null}},{"kind":"utility","slug":"kcv-calculator","name":"KCV Calculator (3DES)","description":"Compute the Key Check Value (KCV) of a single, double or triple length DES key by encrypting 8 bytes of zeros.","longDescription":"Standard payments-industry KCV: ECB-encrypt a block of 0x00 with the key under 3DES and take the first 3 (or 6) bytes of the ciphertext. Single-length keys are repeated three times; double-length keys use the K1K2K1 derivation. Runs entirely in your browser via crypto-js — your key is never transmitted.","category":"payment","categoryName":"Payment & cards","keywords":["kcv calculator","kcv calculator online","kcv calculator free","key check value","3des kcv","tdes kcv","des key kcv","kcv tool","calculate kcv","kcv 3 bytes","kcv 6 bytes","payment hsm kcv"],"badge":"Calculator","url":"https://toolsly.tools/kcv-calculator","manifestUrl":"https://toolsly.tools/kcv-calculator/tool.json","inputs":[{"type":"text","key":"key","label":"Key (hex)","placeholder":"0123456789ABCDEF FEDCBA9876543210","monospace":true,"help":"16 (single), 32 (double) or 48 (triple) hex digits. Whitespace is ignored."},{"type":"select","key":"length","label":"KCV length","defaultValue":"3","choices":[{"value":"3","label":"3 bytes (6 hex digits) — standard"},{"value":"6","label":"6 bytes (12 hex digits)"}]}],"outputs":[{"key":"kcv","label":"KCV"},{"key":"keyForm","label":"Key length"}],"invocation":{"webUi":"https://toolsly.tools/kcv-calculator","api":null}},{"kind":"utility","slug":"leet-speak","name":"Leet Speak (1337) Converter","description":"Convert text into l33t sp34k — three intensity levels: mild (a→4, e→3, i→1, o→0, s→5, t→7), strong, and maximum.","longDescription":"Translate ordinary text into the classic hacker l33t sp34k. Three intensity levels: 'Mild' replaces only the six most recognisable letters (a→4, e→3, i→1, o→0, s→5, t→7), 'Strong' adds b→8, g→9, l→1, z→2, and 'Maximum' replaces nearly every letter with a multi-character glyph mash (c→(, d→|), m→/\\/\\, w→\\/\\/, …). Case is normalised first since leet uses digits and symbols rather than capitalisation. Just-for-fun encoding, runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["leet speak","leet converter","leet generator","1337 speak","1337 converter","l33t speak","l33t generator","text to leet","convert text to leet","hacker speak","leet sp34k generator","leet translator","leet style text"],"badge":"Encoder","url":"https://toolsly.tools/leet-speak","manifestUrl":"https://toolsly.tools/leet-speak/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"elite hacker","multiline":true},{"type":"select","key":"intensity","label":"Intensity","defaultValue":"mild","choices":[{"value":"mild","label":"Mild — six classic swaps"},{"value":"strong","label":"Strong — adds b/g/l/z"},{"value":"maximum","label":"Maximum — every letter mangled"}]}],"outputs":[{"key":"leet","label":"Leet speak","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/leet-speak","api":null}},{"kind":"utility","slug":"length-converter","name":"Length Converter","description":"Convert between metric and imperial length units — mm, cm, m, km, inches, feet, yards, miles.","longDescription":"Drop in a value, pick the source and target units, and get the conversion plus a full table covering every unit from millimeters to miles. Uses the international definitions (1 inch = 25.4 mm exactly, 1 mile = 1609.344 m exactly), so the imperial-to-metric conversions are exact and not rounded approximations. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["length converter","distance converter","cm to inches","inches to cm","feet to meters","meters to feet","miles to km","km to miles","mm to inches","yards to meters","metric to imperial","imperial to metric","length unit calculator","convert length"],"badge":"Converter","url":"https://toolsly.tools/length-converter","manifestUrl":"https://toolsly.tools/length-converter/tool.json","inputs":[{"type":"number","key":"value","label":"Value","defaultValue":100,"step":0.0001},{"type":"select","key":"from","label":"From","defaultValue":"m","choices":[{"value":"mm","label":"mm (millimeter)"},{"value":"cm","label":"cm (centimeter)"},{"value":"m","label":"m (meter)"},{"value":"km","label":"km (kilometer)"},{"value":"in","label":"in (inch)"},{"value":"ft","label":"ft (foot)"},{"value":"yd","label":"yd (yard)"},{"value":"mi","label":"mi (mile)"}]},{"type":"select","key":"to","label":"To","defaultValue":"ft","choices":[{"value":"mm","label":"mm (millimeter)"},{"value":"cm","label":"cm (centimeter)"},{"value":"m","label":"m (meter)"},{"value":"km","label":"km (kilometer)"},{"value":"in","label":"in (inch)"},{"value":"ft","label":"ft (foot)"},{"value":"yd","label":"yd (yard)"},{"value":"mi","label":"mi (mile)"}]}],"outputs":[{"key":"converted","label":"Converted value"},{"key":"meters","label":"In meters"},{"key":"table","label":"All units","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/length-converter","api":null}},{"kind":"utility","slug":"loan-mortgage-calculator","name":"Loan & Mortgage Calculator","description":"Compute monthly payment, total interest, and the amortization schedule for any fixed-rate loan or mortgage.","longDescription":"Plug in the principal, annual interest rate and term — get the monthly payment, total cost over the life of the loan, total interest paid, and a per-month amortization schedule showing how each payment is split between principal and interest. Add an optional extra monthly principal payment to see how much faster you'd be debt-free and how much interest you'd save. The standard fixed-rate formula `M = P × (r/12) / (1 − (1 + r/12)^(−n))` is used. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["loan calculator","mortgage calculator","amortization calculator","loan payment calculator","mortgage payment calculator","car loan calculator","home loan calculator","loan amortization schedule","mortgage interest calculator","fixed rate loan calculator","extra principal payment calculator","payoff date calculator","loan repayment calculator","monthly mortgage payment","interest only calculator"],"badge":"Calculator","url":"https://toolsly.tools/loan-mortgage-calculator","manifestUrl":"https://toolsly.tools/loan-mortgage-calculator/tool.json","inputs":[{"type":"number","key":"principal","label":"Loan amount","defaultValue":250000,"min":0,"step":1000},{"type":"number","key":"annualRate","label":"Annual interest rate (%)","defaultValue":6.5,"min":0,"max":30,"step":0.05},{"type":"number","key":"termYears","label":"Term (years)","defaultValue":30,"min":1,"max":40,"step":1},{"type":"number","key":"extraMonthly","label":"Extra monthly principal (optional)","defaultValue":0,"min":0,"step":25}],"outputs":[{"key":"monthlyPayment","label":"Monthly payment"},{"key":"totalPayments","label":"Total payments"},{"key":"totalInterest","label":"Total interest"},{"key":"payoffMonths","label":"Months to payoff"},{"key":"interestSaved","label":"Interest saved by extra payments"},{"key":"schedule","label":"Amortization (first 12 + last 12 months)","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/loan-mortgage-calculator","api":null}},{"kind":"utility","slug":"lorem-ipsum","name":"Lorem Ipsum Generator","description":"Generate placeholder lorem ipsum text — by paragraph, sentence or word count.","longDescription":"Produce as much lorem ipsum filler text as you need — choose between paragraphs, sentences or individual words and control whether the output begins with the canonical 'Lorem ipsum dolor sit amet…' opener. Generation happens entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["lorem ipsum generator","lorem ipsum","lorem ipsum online","lorem ipsum free","placeholder text generator","dummy text generator","filler text generator","lorem ipsum paragraphs","lorem ipsum sentences","lorem ipsum words","design placeholder text","lipsum generator","fake text generator"],"badge":"Generator","url":"https://toolsly.tools/lorem-ipsum","manifestUrl":"https://toolsly.tools/lorem-ipsum/tool.json","inputs":[{"type":"select","key":"unit","label":"Unit","defaultValue":"paragraphs","choices":[{"value":"paragraphs","label":"Paragraphs"},{"value":"sentences","label":"Sentences"},{"value":"words","label":"Words"}]},{"type":"number","key":"count","label":"How many","defaultValue":3,"min":1,"max":50,"step":1,"help":"Between 1 and 50."},{"type":"boolean","key":"startWithLorem","label":"Start with \"Lorem ipsum…\"","defaultValue":true}],"outputs":[{"key":"text","label":"Generated text","multiline":true},{"key":"stats","label":"Stats"}],"invocation":{"webUi":"https://toolsly.tools/lorem-ipsum","api":null}},{"kind":"utility","slug":"luhn-check","name":"Luhn Check","description":"Validate a card number with the Luhn (mod-10) algorithm — runs locally in your browser.","longDescription":"Paste any card-style number (PAN, IMEI, SIN) and instantly check whether its trailing digit satisfies the Luhn mod-10 checksum. Spaces and dashes are stripped automatically. The card never leaves your device — the validation runs entirely in your browser.","category":"payment","categoryName":"Payment & cards","keywords":["luhn check","luhn check online","luhn check free","luhn algorithm","luhn algorithm online","mod 10 check","validate card number","credit card validator","pan check digit","luhn tool","luhn calculator","card number validator online"],"badge":"Validator","url":"https://toolsly.tools/luhn-check","manifestUrl":"https://toolsly.tools/luhn-check/tool.json","inputs":[{"type":"text","key":"pan","label":"Card number / PAN","placeholder":"4242 4242 4242 4242","monospace":true,"help":"Spaces and dashes are ignored. The number stays in your browser."}],"outputs":[{"key":"valid","label":"Valid (Luhn)"},{"key":"checkDigit","label":"Check digit"},{"key":"normalized","label":"Normalized PAN"},{"key":"length","label":"Length"}],"invocation":{"webUi":"https://toolsly.tools/luhn-check","api":null}},{"kind":"converter","slug":"m4a-to-mp3","name":"M4A to MP3","description":"Convert M4A audio (AAC in MP4) to MP3 — free online, no upload.","longDescription":"Re-encode an M4A file as a variable-bitrate MP3 using LAME. Useful for iTunes / Apple Music downloads, voice memos, or any AAC-in-MP4 audio you need to play on devices that only handle MP3. Conversion runs entirely in your browser via ffmpeg.wasm — your file never touches a server. Expect a few seconds for a 5-minute song; longer files may take a minute or two.","category":"audio","categoryName":"Audio","keywords":["m4a to mp3","convert m4a to mp3","m4a to mp3 converter","m4a to mp3 online","m4a to mp3 free","m4a to mp3 online free","change m4a to mp3","m4a mp3 converter","free m4a to mp3","online m4a to mp3 converter","itunes to mp3"],"url":"https://toolsly.tools/m4a-to-mp3","manifestUrl":"https://toolsly.tools/m4a-to-mp3/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".m4a"],"mimeTypes":["audio/mp4","audio/x-m4a","audio/m4a"]},"output":{"type":"file","extension":".mp3","mimeType":"audio/mpeg"},"options":[{"type":"select","key":"quality","label":"MP3 quality","defaultValue":"2","choices":[{"value":"0","label":"VBR best (~245 kbps)"},{"value":"2","label":"VBR high (~190 kbps)"},{"value":"4","label":"VBR medium (~165 kbps)"},{"value":"6","label":"VBR low (~115 kbps)"},{"value":"9","label":"VBR lowest (~65 kbps)"}],"help":"Lower numbers = better quality and larger files."}],"invocation":{"webUi":"https://toolsly.tools/m4a-to-mp3","api":null}},{"kind":"converter","slug":"m4a-to-wav","name":"M4A to WAV","description":"Convert M4A audio to uncompressed WAV — free online, no upload.","longDescription":"Decode an .m4a file (an MP4 container holding an AAC audio stream — the format used by Apple Music downloads, iPhone voice memos, and many podcasts) and re-encode it as 16-bit PCM WAV (CD quality). WAV is lossless and ideal for editing in a DAW, archival, or any pipeline that expects uncompressed audio. Note that AAC inside M4A is a lossy format, so the WAV will faithfully copy the decoded audio but won't recover information that was discarded during the original encode — you can't get true lossless from a lossy source. The conversion runs entirely in your browser via ffmpeg.wasm; nothing is uploaded.","category":"audio","categoryName":"Audio","keywords":["m4a to wav","convert m4a to wav","m4a to wav converter","m4a to wav online","m4a to wav free","m4a to wav online free","change m4a to wav","m4a wav converter","free m4a to wav","online m4a to wav converter","voice memo to wav","apple m4a to wav"],"url":"https://toolsly.tools/m4a-to-wav","manifestUrl":"https://toolsly.tools/m4a-to-wav/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".m4a"],"mimeTypes":["audio/mp4","audio/m4a","audio/x-m4a"]},"output":{"type":"file","extension":".wav","mimeType":"audio/wav"},"options":[],"invocation":{"webUi":"https://toolsly.tools/m4a-to-wav","api":null}},{"kind":"utility","slug":"markdown-table-builder","name":"Markdown Table Builder","description":"Paste tab-separated values and get a clean GitHub-flavored Markdown table — instantly.","longDescription":"Build a Markdown table without counting pipes by hand. Set the number of rows and columns, pick an alignment, and paste your data as plain tab-separated values (one row per line). We compute column widths, pad cells to line up nicely in the source, and emit valid GitHub-Flavored Markdown — including the alignment row (`| :--- | ---: |` etc.). The first row of your data is treated as the header. A monospaced preview shows roughly how the table will render. Everything happens locally in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["markdown table builder","markdown table generator","create markdown table","gfm table generator","markdown table maker","convert tsv to markdown","csv to markdown table","markdown table online","github table generator","markdown table tool","tsv to markdown","table to markdown","free markdown table generator"],"badge":"Builder","url":"https://toolsly.tools/markdown-table-builder","manifestUrl":"https://toolsly.tools/markdown-table-builder/tool.json","inputs":[{"type":"number","key":"rows","label":"Data rows (not counting header)","defaultValue":2,"min":1,"max":50,"step":1},{"type":"number","key":"cols","label":"Columns","defaultValue":3,"min":2,"max":12,"step":1},{"type":"select","key":"alignment","label":"Column alignment","defaultValue":"left","choices":[{"value":"left","label":"Left"},{"value":"center","label":"Center"},{"value":"right","label":"Right"},{"value":"mixed","label":"Mixed (first left, last right, middle center)"}]},{"type":"text","key":"data","label":"Data (TSV — header on first line, tabs between cells)","multiline":true,"monospace":true,"defaultValue":"Name\tAge\tCity\nAlice\t30\tNYC\nBob\t25\tSF","help":"One row per line, separated by tabs. Copy from a spreadsheet — Excel/Sheets paste as TSV by default."}],"outputs":[{"key":"markdown","label":"Markdown table","multiline":true,"monospace":true},{"key":"preview","label":"Plain-text preview","multiline":true,"monospace":true}],"invocation":{"webUi":"https://toolsly.tools/markdown-table-builder","api":null}},{"kind":"utility","slug":"material-palette","name":"Material Design Palette Generator","description":"Generate a 10-step Material Design tonal palette (50–900) from any base color.","longDescription":"Generate the 10 Material Design 3 tonal palette steps — 50, 100, 200, 300, 400, 500, 600, 700, 800, 900 — from any base color. Each step is an HSL-lightness-interpolated approximation of the official MD3 tonal range, preserving your input's hue and saturation. Useful for theming Android apps, Material Web, or any system using the standard 10-stop tonal naming convention. Output includes hex, RGB, and CSS variable declarations for direct copy-paste. Runs entirely in your browser.","category":"color","categoryName":"Color","keywords":["material palette generator","material design palette","md3 palette","material tonal palette","material design colors","material 50 100 200 generator","material palette from hex","material theme generator","android color palette","material design 3 palette","material palette free","material color picker"],"badge":"Palette","url":"https://toolsly.tools/material-palette","manifestUrl":"https://toolsly.tools/material-palette/tool.json","inputs":[{"type":"text","key":"color","label":"Base color","placeholder":"#3b82f6","defaultValue":"#3b82f6","monospace":true,"help":"Hex, rgb(), hsl(), or a CSS color name."}],"outputs":[{"key":"palette","label":"Tonal palette (50–900)","multiline":true},{"key":"hexList","label":"Hex list","multiline":true},{"key":"cssVars","label":"CSS variables","multiline":true},{"key":"kotlin","label":"Kotlin/Compose constants","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/material-palette","api":null}},{"kind":"utility","slug":"mcc-lookup","name":"MCC Lookup","description":"Look up an ISO 18245 Merchant Category Code by 4-digit code or by name fragment.","longDescription":"Searches a curated list of ~80 well-known ISO 18245 Merchant Category Codes — the 4-digit codes acquirers assign to every merchant to classify what they sell (groceries, airlines, restaurants, digital goods, gambling, and so on). Useful for product engineers building payment dashboards, risk analysts triaging declines, finance teams categorising card spend, and developers writing fraud rules. Match by exact code first, then by case-insensitive substring on description or category. Each entry includes a best-effort risk tier (Low / Medium / High) based on the category — gambling and quasi-cash are High, recurring digital goods and travel are Medium, regulated retail and utilities are Low. Runs entirely in your browser — your data is never sent anywhere.","category":"payment","categoryName":"Payment & cards","keywords":["mcc lookup","merchant category code","mcc code lookup","iso 18245 lookup","mcc to category","merchant category code lookup","mcc code list","card scheme mcc","mcc search","mcc finder","mcc risk tier","mcc decoder"],"badge":"Lookup","url":"https://toolsly.tools/mcc-lookup","manifestUrl":"https://toolsly.tools/mcc-lookup/tool.json","inputs":[{"type":"text","key":"query","label":"MCC code or merchant type","placeholder":"5812, or 'restaurant'","help":"Enter the 4-digit MCC or a name fragment (e.g. 'grocery', 'airline')."}],"outputs":[{"key":"code","label":"MCC code"},{"key":"description","label":"Description"},{"key":"category","label":"Category"},{"key":"riskTier","label":"Risk tier"}],"invocation":{"webUi":"https://toolsly.tools/mcc-lookup","api":null}},{"kind":"converter","slug":"md-to-html","name":"Markdown to HTML","description":"Convert Markdown (.md) files into a styled, standalone HTML document — free online, no upload.","longDescription":"Drop in a Markdown file and download a complete .html document. The output is a single self-contained file with print-safe inline styles for headings, paragraphs, lists, code blocks, blockquotes and GitHub-flavored tables — open it in any browser or attach it to an email. Conversion runs entirely in your browser; your file never leaves your device.","category":"document","categoryName":"Document","keywords":["md to html","markdown to html","convert md to html","convert markdown to html","md to html converter","markdown to html online","md to html free","markdown html converter","online markdown to html converter","change md to html","free md to html","github markdown to html"],"url":"https://toolsly.tools/md-to-html","manifestUrl":"https://toolsly.tools/md-to-html/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".md",".markdown"],"mimeTypes":["text/markdown","text/plain",""]},"output":{"type":"file","extension":".html","mimeType":"text/html"},"options":[],"invocation":{"webUi":"https://toolsly.tools/md-to-html","api":null}},{"kind":"converter","slug":"md-to-pdf","name":"Markdown to PDF","description":"Convert Markdown (.md) files to nicely-styled PDF documents — free online, no upload.","longDescription":"Drop in a Markdown file and download a styled PDF. Headings, lists, links, code blocks, blockquotes and tables are all rendered. Conversion runs entirely in your browser — your file never touches a server.","category":"document","categoryName":"Document","keywords":["md to pdf","markdown to pdf","convert md to pdf","convert markdown to pdf","md to pdf converter","markdown to pdf online","md to pdf free","markdown pdf converter","online markdown to pdf","github markdown to pdf"],"url":"https://toolsly.tools/md-to-pdf","manifestUrl":"https://toolsly.tools/md-to-pdf/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".md",".markdown"],"mimeTypes":["text/markdown","text/plain",""]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"select","key":"pageSize","label":"Page size","defaultValue":"a4","choices":[{"value":"a4","label":"A4"},{"value":"letter","label":"US Letter"},{"value":"legal","label":"US Legal"}]}],"invocation":{"webUi":"https://toolsly.tools/md-to-pdf","api":null}},{"kind":"converter","slug":"md-to-txt","name":"Markdown to Text","description":"Strip Markdown formatting and download a plain-text (.txt) file — free online, no upload.","longDescription":"Drop in a Markdown file and download a plain .txt version with all formatting removed. Headings, bold, italic, links, images, code fences and lists are rendered to HTML and then stripped to their visible text, with paragraph breaks preserved as double newlines. Conversion runs entirely in your browser; your file never leaves your device.","category":"document","categoryName":"Document","keywords":["md to txt","markdown to text","markdown to txt","convert md to txt","convert markdown to text","md to txt converter","markdown to txt online","md to txt free","strip markdown formatting","online markdown to text converter","free markdown to txt","change md to txt"],"url":"https://toolsly.tools/md-to-txt","manifestUrl":"https://toolsly.tools/md-to-txt/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".md",".markdown"],"mimeTypes":["text/markdown","text/plain",""]},"output":{"type":"file","extension":".txt","mimeType":"text/plain"},"options":[],"invocation":{"webUi":"https://toolsly.tools/md-to-txt","api":null}},{"kind":"converter","slug":"mermaid-to-jpg","name":"Mermaid to JPG","description":"Render a Mermaid diagram as a JPG image — paste the code or upload an .mmd file.","longDescription":"Drop in a Mermaid diagram (flowchart, sequence, gantt, mindmap, etc.) or paste it directly, and download a JPG. JPG is smaller than PNG for shareable images but doesn't support transparency — a white background is rendered behind the diagram. Rendering runs locally in your browser — your source never leaves your device.","category":"diagram","categoryName":"Diagram","keywords":["mermaid to jpg","mermaid to jpeg","mermaid jpg","convert mermaid to jpg","mermaid diagram to jpg","mermaid converter","render mermaid online","diagram as code","mermaid jpg export","mermaid image converter","mermaid graph to jpg","export mermaid as jpeg"],"url":"https://toolsly.tools/mermaid-to-jpg","manifestUrl":"https://toolsly.tools/mermaid-to-jpg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mmd",".mermaid"],"mimeTypes":["text/plain","text/x-mermaid",""]},"output":{"type":"file","extension":".jpg","mimeType":"image/jpeg"},"options":[{"type":"select","key":"theme","label":"Theme","defaultValue":"default","choices":[{"value":"default","label":"Default (light)"},{"value":"dark","label":"Dark"},{"value":"neutral","label":"Neutral"},{"value":"forest","label":"Forest"}]},{"type":"select","key":"scale","label":"Scale","defaultValue":"2","choices":[{"value":"1","label":"1× (native)"},{"value":"2","label":"2× (retina)"},{"value":"3","label":"3× (print)"},{"value":"4","label":"4× (very high)"}]},{"type":"number","key":"quality","label":"JPG quality","defaultValue":92,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."}],"invocation":{"webUi":"https://toolsly.tools/mermaid-to-jpg","api":null}},{"kind":"converter","slug":"mermaid-to-pdf","name":"Mermaid to PDF","description":"Render a Mermaid diagram as a single-page PDF — paste the code or upload an .mmd file.","longDescription":"Drop in a Mermaid diagram or paste the code, and download a one-page PDF with the diagram centered on the page. Useful for attaching to reports, printing, or sharing with people who can't open SVG. Rendering runs locally in your browser — your diagram source never leaves your device.","category":"diagram","categoryName":"Diagram","keywords":["mermaid to pdf","mermaid pdf","mermaid diagram to pdf","convert mermaid to pdf","mermaid converter","render mermaid online","diagram as code","mermaid pdf export","mermaid flowchart pdf","export mermaid as pdf","mermaid graph to pdf","mermaid printable"],"url":"https://toolsly.tools/mermaid-to-pdf","manifestUrl":"https://toolsly.tools/mermaid-to-pdf/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mmd",".mermaid"],"mimeTypes":["text/plain","text/x-mermaid",""]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"select","key":"theme","label":"Theme","defaultValue":"default","choices":[{"value":"default","label":"Default (light)"},{"value":"dark","label":"Dark"},{"value":"neutral","label":"Neutral"},{"value":"forest","label":"Forest"}]},{"type":"select","key":"pageSize","label":"Page size","defaultValue":"a4","choices":[{"value":"a4","label":"A4"},{"value":"letter","label":"US Letter"},{"value":"legal","label":"US Legal"}]},{"type":"select","key":"orientation","label":"Orientation","defaultValue":"auto","choices":[{"value":"auto","label":"Auto (match diagram)"},{"value":"portrait","label":"Portrait"},{"value":"landscape","label":"Landscape"}]}],"invocation":{"webUi":"https://toolsly.tools/mermaid-to-pdf","api":null}},{"kind":"converter","slug":"mermaid-to-png","name":"Mermaid to PNG","description":"Render a Mermaid diagram as a high-resolution PNG — paste the code or upload an .mmd file.","longDescription":"Drop in a Mermaid diagram or paste the code directly, and download a crisp PNG. PNG is the best raster format for diagrams — lossless, transparent background optional, works everywhere. The diagram is rendered to SVG then rasterized at up to 4× the native size for sharp output on retina displays and print. Rendering runs locally in your browser — your source never leaves your device.","category":"diagram","categoryName":"Diagram","keywords":["mermaid to png","mermaid png","mermaid diagram to png","convert mermaid to png","mermaid online","render mermaid online","mermaid converter","mermaid image","diagram as code","mermaid flowchart png","export mermaid as image","mermaid graph to png"],"url":"https://toolsly.tools/mermaid-to-png","manifestUrl":"https://toolsly.tools/mermaid-to-png/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mmd",".mermaid"],"mimeTypes":["text/plain","text/x-mermaid",""]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"select","key":"theme","label":"Theme","defaultValue":"default","choices":[{"value":"default","label":"Default (light)"},{"value":"dark","label":"Dark"},{"value":"neutral","label":"Neutral"},{"value":"forest","label":"Forest"}]},{"type":"select","key":"scale","label":"Scale","defaultValue":"2","choices":[{"value":"1","label":"1× (native)"},{"value":"2","label":"2× (retina)"},{"value":"3","label":"3× (print)"},{"value":"4","label":"4× (very high)"}],"help":"Higher = sharper PNG but larger file."},{"type":"boolean","key":"transparent","label":"Transparent background","defaultValue":false,"help":"Off = white background (best for embedding)."}],"invocation":{"webUi":"https://toolsly.tools/mermaid-to-png","api":null}},{"kind":"converter","slug":"mermaid-to-svg","name":"Mermaid to SVG","description":"Render a Mermaid diagram as a scalable SVG — paste the code or upload an .mmd file.","longDescription":"Drop in a Mermaid diagram (flowchart, sequence, gantt, class, ER, state, mindmap, etc.) or paste the code directly, and download a self-contained SVG. SVG scales infinitely without losing quality and embeds beautifully in HTML, docs, slides, and READMEs. Rendering runs locally in your browser — your diagram source never leaves your device.","category":"diagram","categoryName":"Diagram","keywords":["mermaid to svg","mermaid svg","mermaid diagram to svg","render mermaid online","mermaid online","mermaid diagram online","convert mermaid to svg","mermaid converter","mermaid svg export","diagram as code","mermaid flowchart svg","mermaid sequence diagram"],"url":"https://toolsly.tools/mermaid-to-svg","manifestUrl":"https://toolsly.tools/mermaid-to-svg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mmd",".mermaid"],"mimeTypes":["text/plain","text/x-mermaid",""]},"output":{"type":"file","extension":".svg","mimeType":"image/svg+xml"},"options":[{"type":"select","key":"theme","label":"Theme","defaultValue":"default","choices":[{"value":"default","label":"Default (light)"},{"value":"dark","label":"Dark"},{"value":"neutral","label":"Neutral"},{"value":"forest","label":"Forest"}],"help":"Color scheme baked into the SVG."}],"invocation":{"webUi":"https://toolsly.tools/mermaid-to-svg","api":null}},{"kind":"utility","slug":"mime-type-lookup","name":"MIME Type Lookup","description":"Look up the MIME type for a file extension, or the canonical extensions for a MIME type — covering 100+ common types.","longDescription":"Translate between file extensions and MIME types in both directions. Type `.png` and learn it's `image/png`; type `application/vnd.openxmlformats-officedocument.wordprocessingml.document` and learn it's `.docx`. The lookup table covers images, audio, video, text, documents (Word, Excel, PowerPoint, OpenDocument, PDF, EPUB), archives, fonts, web manifest types, certificates, and the generic application/octet-stream catch-all.","category":"dev","categoryName":"Dev","keywords":["mime type lookup","mime type for extension","file extension to mime","what is the mime type of","mime type list","content type lookup","mime type reference","extension to content-type","mime types for office files","image mime types","audio mime types","video mime types","font mime types","mime type for json","mime type for pdf"],"badge":"Reference","url":"https://toolsly.tools/mime-type-lookup","manifestUrl":"https://toolsly.tools/mime-type-lookup/tool.json","inputs":[{"type":"select","key":"mode","label":"Mode","defaultValue":"extension-to-mime","choices":[{"value":"extension-to-mime","label":"Extension → MIME"},{"value":"mime-to-extension","label":"MIME → Extension(s)"}]},{"type":"text","key":"query","label":"Query","defaultValue":".png","placeholder":".png  /  image/png"}],"outputs":[{"key":"mime","label":"MIME type"},{"key":"extensions","label":"Extensions"},{"key":"category","label":"Category"},{"key":"description","label":"Description"}],"invocation":{"webUi":"https://toolsly.tools/mime-type-lookup","api":null}},{"kind":"converter","slug":"mkv-to-mp4","name":"MKV to MP4","description":"Convert MKV (Matroska) video to MP4 (H.264 + AAC) — free, runs in your browser.","longDescription":"Re-encode an MKV file to MP4 with H.264 video and AAC audio so it plays on every phone, TV, and editor. We re-encode rather than remux because MKV files often contain codecs (HEVC, FLAC, subtitles) that MP4 doesn't carry the same way — re-encoding guarantees a clean, broadly compatible result. The conversion runs locally via ffmpeg.wasm, so your file never leaves your device. Performance depends on your CPU: expect roughly real-time encoding for short clips (a 5-minute 720p video may take 1–2 minutes). Sources taller than 1080p are automatically downscaled to 1080p so the browser does not run out of memory mid-encode; for best results keep inputs under about 500 MB.","category":"video","categoryName":"Video","keywords":["mkv to mp4","convert mkv to mp4","mkv to mp4 converter","mkv to mp4 online","mkv to mp4 free","online mkv to mp4","change mkv to mp4","mkv mp4 converter","free mkv to mp4","online mkv to mp4 converter","matroska to mp4","mkv to h264"],"url":"https://toolsly.tools/mkv-to-mp4","manifestUrl":"https://toolsly.tools/mkv-to-mp4/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mkv"],"mimeTypes":["video/x-matroska","video/mkv"]},"output":{"type":"file","extension":".mp4","mimeType":"video/mp4"},"options":[{"type":"number","key":"crf","label":"Quality (CRF)","defaultValue":23,"min":18,"max":30,"step":1,"help":"Constant Rate Factor — lower = better quality and larger file. 23 is a sensible default; 18 is visually lossless; 28+ is heavy compression."}],"invocation":{"webUi":"https://toolsly.tools/mkv-to-mp4","api":null}},{"kind":"utility","slug":"morse-to-text","name":"Morse Code to Text","description":"Decode international Morse code (ITU) back to plain text — letters separated by spaces, words by /.","longDescription":"Paste Morse code and recover the original text. Use a single space between letters and the conventional forward slash (/) between words. Dots can be . • or *; dashes can be - or _ — the tool normalises before lookup. Unknown sequences become '?'. Useful for puzzles, amateur radio drills, and decoding messages from text-to-morse. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["morse to text","morse decoder","morse code to text","decode morse code","morse code translator","morse to english","morse code reader","morse decoder online","convert morse to text","morse code converter","decoded morse","morse to letters","itu morse decode"],"badge":"Decoder","url":"https://toolsly.tools/morse-to-text","manifestUrl":"https://toolsly.tools/morse-to-text/tool.json","inputs":[{"type":"text","key":"morse","label":"Morse code","placeholder":"... --- ... / .... . .-.. .-.. ---","multiline":true,"monospace":true,"help":"Single space between letters. Use / to separate words."}],"outputs":[{"key":"text","label":"Decoded text","multiline":true},{"key":"letterCount","label":"Letters decoded"}],"invocation":{"webUi":"https://toolsly.tools/morse-to-text","api":null}},{"kind":"converter","slug":"mov-to-mp3","name":"MOV to MP3","description":"Extract the audio track from a MOV video as an MP3 file — free online.","longDescription":"Pull the audio track out of a QuickTime .mov file and save it as a high-quality VBR MP3 (around 190 kbps, ffmpeg quality 2). The video stream is discarded — this is the right tool when you want a podcast, lecture, music clip, or voice memo extracted from a MOV (the container most commonly produced by iPhones, Macs, and pro video gear). The conversion runs locally via ffmpeg.wasm, so your file never leaves your device. Performance depends on your CPU: extracting audio is typically faster than re-encoding video, but very long or 4K sources may still be slow. For best results keep inputs under about 500 MB.","category":"video","categoryName":"Video","keywords":["mov to mp3","convert mov to mp3","mov to mp3 converter","mov to mp3 online","mov to mp3 free","online mov to mp3","change mov to mp3","mov mp3 converter","free mov to mp3","online mov to mp3 converter","extract audio from mov","mov audio extractor","mov to mp3 converter online","quicktime to mp3","video to mp3"],"url":"https://toolsly.tools/mov-to-mp3","manifestUrl":"https://toolsly.tools/mov-to-mp3/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mov"],"mimeTypes":["video/quicktime"]},"output":{"type":"file","extension":".mp3","mimeType":"audio/mpeg"},"options":[],"invocation":{"webUi":"https://toolsly.tools/mov-to-mp3","api":null}},{"kind":"converter","slug":"mov-to-mp4","name":"MOV to MP4","description":"Convert MOV (QuickTime) video to MP4 (H.264 + AAC) — free online.","longDescription":"Re-encode a QuickTime MOV file (typically straight from an iPhone or Mac) into a universally playable MP4 with H.264 video and AAC audio. MOV and MP4 are closely related, but plenty of editors, web players, and Android devices prefer MP4. The conversion runs locally via ffmpeg.wasm — your file never leaves your browser. Performance depends on your CPU: expect roughly real-time encoding for short clips (a 5-minute 720p video may take 1–2 minutes). Sources taller than 1080p are automatically downscaled to 1080p so the browser does not run out of memory mid-encode; for best results keep inputs under about 500 MB.","category":"video","categoryName":"Video","keywords":["mov to mp4","convert mov to mp4","mov to mp4 converter","mov to mp4 online","mov to mp4 free","online mov to mp4","change mov to mp4","mov mp4 converter","free mov to mp4","online mov to mp4 converter","quicktime to mp4","iphone mov to mp4"],"url":"https://toolsly.tools/mov-to-mp4","manifestUrl":"https://toolsly.tools/mov-to-mp4/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mov"],"mimeTypes":["video/quicktime"]},"output":{"type":"file","extension":".mp4","mimeType":"video/mp4"},"options":[{"type":"number","key":"crf","label":"Quality (CRF)","defaultValue":23,"min":18,"max":30,"step":1,"help":"Constant Rate Factor — lower = better quality and larger file. 23 is a sensible default; 18 is visually lossless; 28+ is heavy compression."}],"invocation":{"webUi":"https://toolsly.tools/mov-to-mp4","api":null}},{"kind":"converter","slug":"mp3-to-aac","name":"MP3 to AAC","description":"Convert MP3 audio to AAC with selectable bitrate — free online, no upload.","longDescription":"Re-encode an MP3 file as raw AAC. AAC generally sounds better than MP3 at the same bitrate and is the default codec for the iTunes/Apple ecosystem and most modern streaming. Because the source is already lossy, expect some quality loss in the re-encode — pick a higher bitrate if you care. Runs entirely in your browser using ffmpeg.wasm; nothing is uploaded. Expect a few seconds for a 5-minute song.","category":"audio","categoryName":"Audio","keywords":["mp3 to aac","convert mp3 to aac","mp3 to aac converter","mp3 to aac online","mp3 to aac free","mp3 to aac online free","change mp3 to aac","mp3 aac converter","free mp3 to aac","online mp3 to aac converter"],"url":"https://toolsly.tools/mp3-to-aac","manifestUrl":"https://toolsly.tools/mp3-to-aac/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp3"],"mimeTypes":["audio/mpeg","audio/mp3"]},"output":{"type":"file","extension":".aac","mimeType":"audio/aac"},"options":[{"type":"select","key":"bitrate","label":"AAC bitrate","defaultValue":"192k","choices":[{"value":"320k","label":"320 kbps (highest)"},{"value":"256k","label":"256 kbps"},{"value":"192k","label":"192 kbps (recommended)"},{"value":"128k","label":"128 kbps"},{"value":"96k","label":"96 kbps (smallest)"}],"help":"Higher bitrates = better quality and larger files."}],"invocation":{"webUi":"https://toolsly.tools/mp3-to-aac","api":null}},{"kind":"converter","slug":"mp3-to-flac","name":"MP3 to FLAC","description":"Convert MP3 audio to FLAC (lossless) — free online, no upload.","longDescription":"Re-encode an MP3 file as FLAC, a lossless compressed format. Note that the MP3 source is already lossy — this conversion preserves whatever quality is in the MP3 but cannot restore detail the original encoder discarded. FLAC is still useful here for archival, for pipelines that require a lossless container, or for libraries that prefer FLAC. Runs entirely in your browser using ffmpeg.wasm; nothing is uploaded. Expect a few seconds for a 5-minute song; longer files may take a minute or two.","category":"audio","categoryName":"Audio","keywords":["mp3 to flac","convert mp3 to flac","mp3 to flac converter","mp3 to flac online","mp3 to flac free","mp3 to flac online free","change mp3 to flac","mp3 flac converter","free mp3 to flac","online mp3 to flac converter","mp3 to lossless"],"url":"https://toolsly.tools/mp3-to-flac","manifestUrl":"https://toolsly.tools/mp3-to-flac/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp3"],"mimeTypes":["audio/mpeg","audio/mp3"]},"output":{"type":"file","extension":".flac","mimeType":"audio/flac"},"options":[],"invocation":{"webUi":"https://toolsly.tools/mp3-to-flac","api":null}},{"kind":"converter","slug":"mp3-to-m4a","name":"MP3 to M4A","description":"Convert MP3 audio to M4A (AAC in MP4 container) — free online, no upload.","longDescription":"Re-encode an MP3 file as M4A — AAC inside an MP4 container, the format iTunes and the Apple ecosystem use natively. Because the source is already lossy, the re-encode will lose some quality; pick a higher bitrate if you care. Runs entirely in your browser using ffmpeg.wasm — your audio never leaves your device. Expect a few seconds for a 5-minute song.","category":"audio","categoryName":"Audio","keywords":["mp3 to m4a","convert mp3 to m4a","mp3 to m4a converter","mp3 to m4a online","mp3 to m4a free","mp3 to m4a online free","change mp3 to m4a","mp3 m4a converter","free mp3 to m4a","online mp3 to m4a converter","mp3 to itunes"],"url":"https://toolsly.tools/mp3-to-m4a","manifestUrl":"https://toolsly.tools/mp3-to-m4a/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp3"],"mimeTypes":["audio/mpeg","audio/mp3"]},"output":{"type":"file","extension":".m4a","mimeType":"audio/mp4"},"options":[{"type":"select","key":"bitrate","label":"AAC bitrate","defaultValue":"192k","choices":[{"value":"320k","label":"320 kbps (highest)"},{"value":"256k","label":"256 kbps"},{"value":"192k","label":"192 kbps (recommended)"},{"value":"128k","label":"128 kbps"},{"value":"96k","label":"96 kbps (smallest)"}],"help":"Higher bitrates = better quality and larger files."}],"invocation":{"webUi":"https://toolsly.tools/mp3-to-m4a","api":null}},{"kind":"converter","slug":"mp3-to-ogg","name":"MP3 to OGG","description":"Convert MP3 audio to Ogg Vorbis — free online, no upload.","longDescription":"Re-encode an MP3 file as Ogg Vorbis. Vorbis is a free, open audio codec that often sounds better than MP3 at lower bitrates. Because the source is already lossy, expect some quality loss in the re-encode — pick a higher quality setting if you care. The conversion runs entirely in your browser using ffmpeg.wasm; nothing is uploaded. Typically takes a few seconds for a 5-minute song; longer files may take a minute or two.","category":"audio","categoryName":"Audio","keywords":["mp3 to ogg","convert mp3 to ogg","mp3 to ogg converter","mp3 to ogg online","mp3 to ogg free","mp3 to ogg online free","change mp3 to ogg","mp3 ogg converter","free mp3 to ogg","online mp3 to ogg converter","mp3 to vorbis"],"url":"https://toolsly.tools/mp3-to-ogg","manifestUrl":"https://toolsly.tools/mp3-to-ogg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp3"],"mimeTypes":["audio/mpeg","audio/mp3"]},"output":{"type":"file","extension":".ogg","mimeType":"audio/ogg"},"options":[{"type":"select","key":"quality","label":"Vorbis quality","defaultValue":"6","choices":[{"value":"10","label":"Highest (~500 kbps)"},{"value":"8","label":"High (~256 kbps)"},{"value":"6","label":"Medium (~192 kbps)"},{"value":"4","label":"Low (~128 kbps)"},{"value":"2","label":"Lowest (~96 kbps)"}],"help":"Higher numbers = better quality and larger files."}],"invocation":{"webUi":"https://toolsly.tools/mp3-to-ogg","api":null}},{"kind":"converter","slug":"mp3-to-opus","name":"MP3 to Opus","description":"Convert MP3 audio to Opus with selectable bitrate — free online, no upload.","longDescription":"Re-encode an MP3 file as Opus, a modern open codec that delivers near-transparent quality at remarkably low bitrates — Opus at 96 kbps typically rivals MP3 at 160–192 kbps. Great for podcasts, voice notes, and anywhere bandwidth or storage matters. Because the source is already lossy, expect some loss in the re-encode. Runs entirely in your browser using ffmpeg.wasm — nothing is uploaded. Expect a few seconds for a 5-minute song.","category":"audio","categoryName":"Audio","keywords":["mp3 to opus","convert mp3 to opus","mp3 to opus converter","mp3 to opus online","mp3 to opus free","mp3 to opus online free","change mp3 to opus","mp3 opus converter","free mp3 to opus","online mp3 to opus converter"],"url":"https://toolsly.tools/mp3-to-opus","manifestUrl":"https://toolsly.tools/mp3-to-opus/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp3"],"mimeTypes":["audio/mpeg","audio/mp3"]},"output":{"type":"file","extension":".opus","mimeType":"audio/opus"},"options":[{"type":"select","key":"bitrate","label":"Opus bitrate","defaultValue":"96k","choices":[{"value":"160k","label":"160 kbps (highest, near-transparent)"},{"value":"128k","label":"128 kbps"},{"value":"96k","label":"96 kbps (recommended)"},{"value":"64k","label":"64 kbps"},{"value":"48k","label":"48 kbps (voice)"},{"value":"32k","label":"32 kbps (smallest, voice)"}],"help":"Opus is very efficient — 96 kbps already rivals MP3 at ~190 kbps."}],"invocation":{"webUi":"https://toolsly.tools/mp3-to-opus","api":null}},{"kind":"converter","slug":"mp3-to-wav","name":"MP3 to WAV","description":"Convert MP3 audio to uncompressed WAV — free online, no upload.","longDescription":"Decode an MP3 file and re-encode it as a 16-bit PCM WAV (CD quality). WAV is lossless and ideal for editing in a DAW, archival, or any pipeline that expects uncompressed audio. The conversion runs entirely in your browser using ffmpeg.wasm — your file never leaves your device. Expect a few seconds for a 5-minute song; longer files may take a minute or two on the first run while the ffmpeg core loads.","category":"audio","categoryName":"Audio","keywords":["mp3 to wav","convert mp3 to wav","mp3 to wav converter","mp3 to wav online","mp3 to wav free","mp3 to wav online free","change mp3 to wav","mp3 wav converter","free mp3 to wav","online mp3 to wav converter"],"url":"https://toolsly.tools/mp3-to-wav","manifestUrl":"https://toolsly.tools/mp3-to-wav/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp3"],"mimeTypes":["audio/mpeg","audio/mp3"]},"output":{"type":"file","extension":".wav","mimeType":"audio/wav"},"options":[],"invocation":{"webUi":"https://toolsly.tools/mp3-to-wav","api":null}},{"kind":"converter","slug":"mp4-to-aac","name":"MP4 to AAC","description":"Extract the AAC audio track from an MP4 video — free online, no re-encode.","longDescription":"Pull the audio track out of an MP4 and save it as a raw .aac file. The video stream is discarded and, on the happy path, the audio isn't re-encoded at all — ffmpeg's `-c copy` simply repackages the existing AAC stream from the MP4 container into a bare AAC file. That makes this nearly instant, even for long clips, and means there's zero generation loss: the bytes that go in are the bytes that come out. Almost every MP4 uses AAC audio, so this works for the vast majority of files. If a particular MP4 has an unusual audio codec (or a stream that can't be copied directly), the conversion will surface a clear error and you can use mp4-to-mp3 instead. The conversion runs entirely in your browser via ffmpeg.wasm — nothing is uploaded.","category":"video","categoryName":"Video","keywords":["mp4 to aac","convert mp4 to aac","mp4 to aac converter","mp4 to aac online","mp4 to aac free","online mp4 to aac","change mp4 to aac","mp4 aac converter","free mp4 to aac","online mp4 to aac converter","extract audio from mp4","mp4 audio extractor","mp4 to aac no re-encode","extract aac from mp4"],"url":"https://toolsly.tools/mp4-to-aac","manifestUrl":"https://toolsly.tools/mp4-to-aac/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp4"],"mimeTypes":["video/mp4"]},"output":{"type":"file","extension":".aac","mimeType":"audio/aac"},"options":[],"invocation":{"webUi":"https://toolsly.tools/mp4-to-aac","api":null}},{"kind":"converter","slug":"mp4-to-flac","name":"MP4 to FLAC","description":"Extract the audio track from an MP4 video as a FLAC file — free online.","longDescription":"Pull the audio track out of an MP4 and re-encode it as FLAC, a lossless compressed audio format. The video stream is discarded — this is the right tool when you want the cleanest possible audio extraction for archival or further editing. Heads-up: MP4 audio is almost always AAC, which is lossy, so the FLAC will faithfully preserve the decoded audio but it can't recover information the original AAC encode threw away — you don't get true lossless from a lossy source. The conversion runs entirely in your browser via ffmpeg.wasm; nothing is uploaded. FLAC files are noticeably larger than MP3 or AAC but smaller than WAV.","category":"video","categoryName":"Video","keywords":["mp4 to flac","convert mp4 to flac","mp4 to flac converter","mp4 to flac online","mp4 to flac free","online mp4 to flac","change mp4 to flac","mp4 flac converter","free mp4 to flac","online mp4 to flac converter","extract audio from mp4","mp4 audio extractor","mp4 to flac converter online","extract flac from mp4","video to flac"],"url":"https://toolsly.tools/mp4-to-flac","manifestUrl":"https://toolsly.tools/mp4-to-flac/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp4"],"mimeTypes":["video/mp4"]},"output":{"type":"file","extension":".flac","mimeType":"audio/flac"},"options":[],"invocation":{"webUi":"https://toolsly.tools/mp4-to-flac","api":null}},{"kind":"converter","slug":"mp4-to-gif","name":"MP4 to GIF","description":"Convert MP4 video to an animated GIF — free online, with a tuned palette.","longDescription":"Turn an MP4 clip into a high-quality animated GIF. We build a custom palette from the video frames and apply it in a single ffmpeg pass — the result looks dramatically better than naive GIF conversion (no muddy colors, no banding) at a reasonable file size. Keep clips short: GIFs are uncompressed and grow large quickly. The conversion runs locally via ffmpeg.wasm, so your file never leaves your device. Performance depends on your CPU: a 10-second clip typically takes 10–30 seconds. Very large files or 4K sources may be slow or run out of memory — for best results keep inputs under about 500 MB.","category":"video","categoryName":"Video","keywords":["mp4 to gif","convert mp4 to gif","mp4 to gif converter","mp4 to gif online","mp4 to gif free","online mp4 to gif","video to gif","mp4 to animated gif","mp4 gif converter","free mp4 to gif","online mp4 to gif converter","change mp4 to gif"],"url":"https://toolsly.tools/mp4-to-gif","manifestUrl":"https://toolsly.tools/mp4-to-gif/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp4"],"mimeTypes":["video/mp4"]},"output":{"type":"file","extension":".gif","mimeType":"image/gif"},"options":[{"type":"select","key":"fps","label":"Frame rate","defaultValue":"15","choices":[{"value":"8","label":"8 fps (smallest)"},{"value":"12","label":"12 fps"},{"value":"15","label":"15 fps (recommended)"},{"value":"20","label":"20 fps"},{"value":"24","label":"24 fps (smoothest)"}],"help":"Higher fps = smoother motion and a bigger file. 15 fps is a good balance for most clips."},{"type":"select","key":"width","label":"Output width","defaultValue":"480","choices":[{"value":"320","label":"320 px (small)"},{"value":"480","label":"480 px (medium)"},{"value":"640","label":"640 px (large)"}],"help":"Height scales automatically to preserve aspect ratio."}],"invocation":{"webUi":"https://toolsly.tools/mp4-to-gif","api":null}},{"kind":"converter","slug":"mp4-to-mkv","name":"MP4 to MKV","description":"Remux MP4 to Matroska (MKV) — fast, lossless, no re-encoding.","longDescription":"Repackage an MP4 file into an MKV container without re-encoding the video or audio streams. Because nothing is decoded — the existing streams are just copied into a new container — the conversion is very fast and there is no quality loss. MKV is a flexible open container that supports multiple audio tracks, subtitles, and chapters; it's popular for media libraries and home theater setups. The conversion runs locally in your browser via ffmpeg.wasm, so the file never leaves your device. For best results keep inputs under about 500 MB.","category":"video","categoryName":"Video","keywords":["mp4 to mkv","convert mp4 to mkv","mp4 to mkv converter","mp4 to mkv online","mp4 to mkv free","online mp4 to mkv","change mp4 to mkv","mp4 mkv converter","free mp4 to mkv","online mp4 to mkv converter","remux mp4 to mkv","mp4 to matroska"],"url":"https://toolsly.tools/mp4-to-mkv","manifestUrl":"https://toolsly.tools/mp4-to-mkv/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp4"],"mimeTypes":["video/mp4"]},"output":{"type":"file","extension":".mkv","mimeType":"video/x-matroska"},"options":[],"invocation":{"webUi":"https://toolsly.tools/mp4-to-mkv","api":null}},{"kind":"converter","slug":"mp4-to-mov","name":"MP4 to MOV","description":"Convert MP4 video to MOV (QuickTime) — free online, no upload.","longDescription":"Re-encode an MP4 file into a QuickTime-friendly MOV container with H.264 video and AAC audio. MOV is preferred by Final Cut Pro, iMovie, and many Apple workflows. We also set the moov atom to the start of the file (faststart) so the video can begin playing while it's still downloading. The conversion runs locally via ffmpeg.wasm, so your file never leaves your device. Performance depends on your CPU: expect roughly real-time encoding for short clips (a 5-minute 720p video may take 1–2 minutes). Sources taller than 1080p are automatically downscaled to 1080p so the browser does not run out of memory mid-encode; for best results keep inputs under about 500 MB.","category":"video","categoryName":"Video","keywords":["mp4 to mov","convert mp4 to mov","mp4 to mov converter","mp4 to mov online","mp4 to mov free","online mp4 to mov","change mp4 to mov","mp4 mov converter","free mp4 to mov","online mp4 to mov converter","mp4 to quicktime","mp4 for final cut pro"],"url":"https://toolsly.tools/mp4-to-mov","manifestUrl":"https://toolsly.tools/mp4-to-mov/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp4"],"mimeTypes":["video/mp4"]},"output":{"type":"file","extension":".mov","mimeType":"video/quicktime"},"options":[{"type":"number","key":"crf","label":"Quality (CRF)","defaultValue":23,"min":18,"max":30,"step":1,"help":"Constant Rate Factor — lower = better quality and larger file. 23 is a sensible default; 18 is visually lossless; 28+ is heavy compression."}],"invocation":{"webUi":"https://toolsly.tools/mp4-to-mov","api":null}},{"kind":"converter","slug":"mp4-to-mp3","name":"MP4 to MP3","description":"Extract the audio track from an MP4 video as an MP3 file — free online.","longDescription":"Pull the audio track out of an MP4 and save it as a high-quality VBR MP3 (around 190 kbps, ffmpeg quality 2). The video stream is discarded — this is the right tool when you want a podcast, lecture, music clip, or voice memo extracted from a video file. The conversion runs locally via ffmpeg.wasm, so your file never leaves your device. Performance depends on your CPU: extracting audio is typically faster than re-encoding video, but very long or 4K sources may still be slow. For best results keep inputs under about 500 MB.","category":"video","categoryName":"Video","keywords":["mp4 to mp3","convert mp4 to mp3","mp4 to mp3 converter","mp4 to mp3 online","mp4 to mp3 free","online mp4 to mp3","change mp4 to mp3","mp4 mp3 converter","free mp4 to mp3","online mp4 to mp3 converter","extract audio from video","mp4 audio extractor","video to mp3"],"url":"https://toolsly.tools/mp4-to-mp3","manifestUrl":"https://toolsly.tools/mp4-to-mp3/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp4"],"mimeTypes":["video/mp4"]},"output":{"type":"file","extension":".mp3","mimeType":"audio/mpeg"},"options":[],"invocation":{"webUi":"https://toolsly.tools/mp4-to-mp3","api":null}},{"kind":"converter","slug":"mp4-to-wav","name":"MP4 to WAV","description":"Extract the audio track from an MP4 video as an uncompressed WAV file.","longDescription":"Pull the audio out of an MP4 and save it as a 16-bit PCM WAV — the lossless, uncompressed format expected by every audio editor and DAW. The video stream is discarded; this is the right tool when you need clean source audio from a video for editing, transcription, or archival. The conversion runs locally via ffmpeg.wasm, so your file never leaves your device. Performance depends on your CPU: extracting audio is typically faster than re-encoding video, but very long or 4K sources may still be slow. For best results keep inputs under about 500 MB.","category":"video","categoryName":"Video","keywords":["mp4 to wav","convert mp4 to wav","mp4 to wav converter","mp4 to wav online","mp4 to wav free","online mp4 to wav","change mp4 to wav","mp4 wav converter","free mp4 to wav","online mp4 to wav converter","extract audio from video","mp4 audio extractor","video to wav"],"url":"https://toolsly.tools/mp4-to-wav","manifestUrl":"https://toolsly.tools/mp4-to-wav/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp4"],"mimeTypes":["video/mp4"]},"output":{"type":"file","extension":".wav","mimeType":"audio/wav"},"options":[],"invocation":{"webUi":"https://toolsly.tools/mp4-to-wav","api":null}},{"kind":"converter","slug":"mp4-to-webm","name":"MP4 to WebM","description":"Convert MP4 video to WebM (VP9 + Opus) — free, runs entirely in your browser.","longDescription":"Re-encode an MP4 file as a WebM container with VP9 video and Opus audio. WebM is the open, royalty-free format used by YouTube and most browsers — great for embedding video on the web with small file sizes. The conversion runs locally via ffmpeg.wasm, so your video never leaves your device. Sources taller than 1080p are automatically downscaled to 1080p so the browser doesn't run out of memory mid-encode. Performance depends on your CPU: expect roughly real-time encoding (a 5-minute 720p video may take 1–2 minutes). For best results keep inputs under ~500 MB.","category":"video","categoryName":"Video","keywords":["mp4 to webm","convert mp4 to webm","mp4 to webm converter","mp4 to webm online","mp4 to webm free","online mp4 to webm","change mp4 to webm","mp4 webm converter","free mp4 to webm","online mp4 to webm converter","mp4 to vp9","encode mp4 as webm"],"url":"https://toolsly.tools/mp4-to-webm","manifestUrl":"https://toolsly.tools/mp4-to-webm/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp4"],"mimeTypes":["video/mp4"]},"output":{"type":"file","extension":".webm","mimeType":"video/webm"},"options":[{"type":"select","key":"bitrate","label":"Video bitrate","defaultValue":"1M","choices":[{"value":"2M","label":"High (2 Mbps)"},{"value":"1M","label":"Medium (1 Mbps)"},{"value":"500k","label":"Low (500 kbps)"}],"help":"Higher bitrate = better quality and larger file. 1 Mbps is a good default for 720p web video."}],"invocation":{"webUi":"https://toolsly.tools/mp4-to-webm","api":null}},{"kind":"converter","slug":"ogg-to-mp3","name":"OGG to MP3","description":"Convert Ogg Vorbis audio to MP3 with selectable quality — free online, no upload.","longDescription":"Re-encode an Ogg Vorbis file as a variable-bitrate MP3 using LAME. MP3 has the widest device and player support, so this is the go-to format when compatibility matters. Conversion happens entirely in your browser via ffmpeg.wasm — your audio never leaves your device. Expect a few seconds for a 5-minute song; longer files may take a minute or two.","category":"audio","categoryName":"Audio","keywords":["ogg to mp3","convert ogg to mp3","ogg to mp3 converter","ogg to mp3 online","ogg to mp3 free","ogg to mp3 online free","change ogg to mp3","ogg mp3 converter","free ogg to mp3","online ogg to mp3 converter","vorbis to mp3"],"url":"https://toolsly.tools/ogg-to-mp3","manifestUrl":"https://toolsly.tools/ogg-to-mp3/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".ogg"],"mimeTypes":["audio/ogg"]},"output":{"type":"file","extension":".mp3","mimeType":"audio/mpeg"},"options":[{"type":"select","key":"quality","label":"MP3 quality","defaultValue":"2","choices":[{"value":"0","label":"VBR best (~245 kbps)"},{"value":"2","label":"VBR high (~190 kbps)"},{"value":"4","label":"VBR medium (~165 kbps)"},{"value":"6","label":"VBR low (~115 kbps)"},{"value":"9","label":"VBR lowest (~65 kbps)"}],"help":"Lower numbers = better quality and larger files."}],"invocation":{"webUi":"https://toolsly.tools/ogg-to-mp3","api":null}},{"kind":"converter","slug":"ogg-to-wav","name":"OGG to WAV","description":"Convert Ogg Vorbis audio to uncompressed WAV — free online, no upload.","longDescription":"Decode an Ogg Vorbis file and re-encode it as 16-bit PCM WAV (CD quality). WAV is lossless and ideal for editing in a DAW, archival, or any pipeline that expects uncompressed audio. Note that Ogg Vorbis is a lossy format, so the resulting WAV will be a faithful copy of the decoded audio but won't recover information that was discarded during the original Vorbis encode — you can't get true lossless from a lossy source. The conversion runs entirely in your browser via ffmpeg.wasm; nothing is uploaded.","category":"audio","categoryName":"Audio","keywords":["ogg to wav","convert ogg to wav","ogg to wav converter","ogg to wav online","ogg to wav free","ogg to wav online free","change ogg to wav","ogg wav converter","free ogg to wav","online ogg to wav converter","vorbis to wav"],"url":"https://toolsly.tools/ogg-to-wav","manifestUrl":"https://toolsly.tools/ogg-to-wav/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".ogg",".oga"],"mimeTypes":["audio/ogg","audio/vorbis","application/ogg"]},"output":{"type":"file","extension":".wav","mimeType":"audio/wav"},"options":[],"invocation":{"webUi":"https://toolsly.tools/ogg-to-wav","api":null}},{"kind":"utility","slug":"password-generator","name":"Password Generator","description":"Generate cryptographically random passwords — choose length, character classes, and exclude lookalikes.","longDescription":"Build a strong random password using crypto.getRandomValues with rejection sampling for uniform distribution. Pick the length (4–128), toggle uppercase, lowercase, digits and symbols, and optionally exclude characters that look alike (0/O/1/l/I). The entropy in bits is reported so you can judge strength. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["password generator","strong password generator","random password generator","secure password generator","password maker","password creator","password generator online","password generator free","passphrase generator","password tool","high entropy password","crypto password generator","uniform random password"],"badge":"Generator","url":"https://toolsly.tools/password-generator","manifestUrl":"https://toolsly.tools/password-generator/tool.json","inputs":[{"type":"number","key":"length","label":"Length","defaultValue":16,"min":4,"max":128,"step":1},{"type":"boolean","key":"uppercase","label":"Include uppercase (A-Z)","defaultValue":true},{"type":"boolean","key":"lowercase","label":"Include lowercase (a-z)","defaultValue":true},{"type":"boolean","key":"digits","label":"Include digits (0-9)","defaultValue":true},{"type":"boolean","key":"symbols","label":"Include symbols (!@#…)","defaultValue":true},{"type":"boolean","key":"excludeSimilar","label":"Exclude similar (0OIl1)","defaultValue":false}],"outputs":[{"key":"password","label":"Password"},{"key":"entropyBits","label":"Entropy (bits)"}],"invocation":{"webUi":"https://toolsly.tools/password-generator","api":null}},{"kind":"utility","slug":"password-strength-checker","name":"Password Strength Checker","description":"Estimate password entropy and crack time — checked entirely locally, nothing uploaded.","longDescription":"Type a password and see its character pool size, entropy in bits, a 0–4 strength score, and crack-time estimates for both online (1,000 guesses/sec) and offline (10 billion guesses/sec) attacks. Everything runs in your browser — the password is never transmitted.","category":"text","categoryName":"Text & Encoding","keywords":["password strength checker","password strength meter","password entropy calculator","password crack time","how strong is my password","password tester","password strength online","password strength free","password security tester","password score","entropy calculator","password analyzer","password evaluator"],"badge":"Calculator","url":"https://toolsly.tools/password-strength-checker","manifestUrl":"https://toolsly.tools/password-strength-checker/tool.json","inputs":[{"type":"text","key":"password","label":"Password","placeholder":"Type a password to evaluate","monospace":true,"help":"Stays in your browser — never sent over the network."}],"outputs":[{"key":"score","label":"Score"},{"key":"entropyBits","label":"Entropy (bits)"},{"key":"poolSize","label":"Character pool"},{"key":"crackTimeOnline","label":"Online crack (1k/sec)"},{"key":"crackTimeOffline","label":"Offline crack (10B/sec)"}],"invocation":{"webUi":"https://toolsly.tools/password-strength-checker","api":null}},{"kind":"converter","slug":"pdf-add-page-numbers","name":"Add Page Numbers to PDF","description":"Stamp page numbers onto a PDF — pick position, format and start number, all in your browser.","longDescription":"Drop in a PDF and choose where the numbers go (bottom or top, left/center/right), the format (\"1\", \"Page 1\", \"1 of N\", \"Page 1 of N\"), the starting number, and the font size. Use \"Skip first page\" for documents that have a cover page that shouldn't be numbered. Numbers are drawn in Helvetica on every page. Everything runs locally — your file is never uploaded.","category":"document","categoryName":"Document","keywords":["add page numbers to pdf","pdf page numbers","number pdf pages","page numbering pdf","stamp page numbers","pdf pagination","add page numbers online","add page numbers free","page x of y pdf","footer page numbers pdf","pdf page numbers in browser","insert page numbers in pdf"],"url":"https://toolsly.tools/pdf-add-page-numbers","manifestUrl":"https://toolsly.tools/pdf-add-page-numbers/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"select","key":"position","label":"Position","defaultValue":"bottom-center","choices":[{"value":"bottom-center","label":"Bottom center"},{"value":"bottom-right","label":"Bottom right"},{"value":"bottom-left","label":"Bottom left"},{"value":"top-center","label":"Top center"},{"value":"top-right","label":"Top right"}]},{"type":"select","key":"format","label":"Format","defaultValue":"n","choices":[{"value":"n","label":"1"},{"value":"page-n","label":"Page 1"},{"value":"n-of-total","label":"1 of N"},{"value":"page-n-of-total","label":"Page 1 of N"}]},{"type":"number","key":"startAt","label":"Start number","defaultValue":1,"min":1,"step":1},{"type":"number","key":"fontSize","label":"Font size","defaultValue":12,"min":6,"max":48,"step":1},{"type":"boolean","key":"excludeFirst","label":"Skip first page (e.g. cover)","defaultValue":false}],"invocation":{"webUi":"https://toolsly.tools/pdf-add-page-numbers","api":null}},{"kind":"converter","slug":"pdf-add-watermark","name":"Add Watermark to PDF","description":"Stamp a text watermark across every page of a PDF — in your browser, no upload.","longDescription":"Drop in a PDF, type your watermark text, and pick a position, color, size and opacity. The watermark is drawn on every page using a built-in Helvetica font. Choose \"Center diagonal\" to get the classic 45° draft/confidential stamp, or any of the edge positions for a header/footer style. Everything runs locally — your file is never uploaded.","category":"document","categoryName":"Document","keywords":["watermark pdf","add watermark to pdf","pdf watermark","stamp pdf","draft watermark pdf","confidential watermark pdf","add text to pdf","watermark pdf online","watermark pdf free","diagonal watermark pdf","pdf watermark generator","add watermark pdf in browser"],"url":"https://toolsly.tools/pdf-add-watermark","manifestUrl":"https://toolsly.tools/pdf-add-watermark/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"text","key":"text","label":"Watermark text","defaultValue":"DRAFT","placeholder":"CONFIDENTIAL"},{"type":"select","key":"position","label":"Position","defaultValue":"diagonal","choices":[{"value":"diagonal","label":"Center diagonal"},{"value":"top","label":"Top"},{"value":"bottom","label":"Bottom"},{"value":"center","label":"Center horizontal"}]},{"type":"number","key":"opacity","label":"Opacity (%)","defaultValue":30,"min":0,"max":100,"step":5},{"type":"number","key":"fontSize","label":"Font size","defaultValue":60,"min":12,"max":120,"step":1},{"type":"select","key":"color","label":"Color","defaultValue":"gray","choices":[{"value":"gray","label":"Gray"},{"value":"red","label":"Red"},{"value":"blue","label":"Blue"},{"value":"black","label":"Black"}]}],"invocation":{"webUi":"https://toolsly.tools/pdf-add-watermark","api":null}},{"kind":"converter","slug":"pdf-compress","name":"Compress PDF","description":"Shrink a PDF by rasterizing pages to JPEG at a chosen DPI — all in your browser.","longDescription":"Drop in a PDF and choose a quality level — High (150 DPI), Medium (96 DPI) or Low (72 DPI). Each page is rendered to a JPEG and reassembled into a new PDF, typically dropping file size by 3-10x for scan-heavy or image-heavy documents. IMPORTANT: this is a lossy process — selectable text and vector graphics in the original PDF become flat images, so the output PDF is no longer searchable or copy-pastable. Use this when size matters more than text fidelity (e.g. emailing scans). Everything runs locally in your browser.","category":"document","categoryName":"Document","keywords":["compress pdf","compress pdf online","compress pdf free","shrink pdf","reduce pdf size","pdf compressor","make pdf smaller","optimize pdf size","pdf size reducer","compress pdf in browser","downsize pdf","compress scanned pdf"],"url":"https://toolsly.tools/pdf-compress","manifestUrl":"https://toolsly.tools/pdf-compress/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"select","key":"quality","label":"Quality","defaultValue":"medium","choices":[{"value":"high","label":"High (150 DPI)"},{"value":"medium","label":"Medium (96 DPI)"},{"value":"low","label":"Low (72 DPI)"}],"help":"Output PDF is rasterized — selectable text in the original becomes a flat image."}],"invocation":{"webUi":"https://toolsly.tools/pdf-compress","api":null}},{"kind":"converter","slug":"pdf-delete-pages","name":"Delete PDF Pages","description":"Remove specific pages or ranges from a PDF — in your browser, with no upload.","longDescription":"Drop in a PDF and list the pages you want to remove (single pages or ranges, e.g. \"2, 5-7, 12\"). The remaining pages keep their original order and content. Everything runs locally in your browser — your file is never uploaded.","category":"document","categoryName":"Document","keywords":["delete pdf pages","remove pdf pages","delete pages from pdf","remove pages from pdf","pdf page remover","pdf page deleter","delete pdf pages online","remove pdf pages free","drop pages from pdf","trim pdf pages","delete pdf page online","edit pdf pages"],"url":"https://toolsly.tools/pdf-delete-pages","manifestUrl":"https://toolsly.tools/pdf-delete-pages/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"text","key":"pages","label":"Pages to delete","defaultValue":"","placeholder":"2, 5-7, 12","help":"List page numbers and ranges separated by commas."}],"invocation":{"webUi":"https://toolsly.tools/pdf-delete-pages","api":null}},{"kind":"converter","slug":"pdf-extract-pages","name":"Extract PDF Pages","description":"Pull selected pages out of a PDF into a new, smaller PDF — entirely in your browser.","longDescription":"Drop in a PDF and list the pages you want to keep (e.g. \"1-3, 7, 10-12\"). The output is a brand-new PDF containing just those pages, in ascending order, with all their original content intact. Everything runs locally — your file is never uploaded.","category":"document","categoryName":"Document","keywords":["extract pdf pages","extract pages from pdf","pdf page extractor","save pdf pages","keep pdf pages","pdf extract online","pull pages from pdf","extract pdf pages free","select pages from pdf","copy pdf pages","extract chapter from pdf","pdf page picker"],"url":"https://toolsly.tools/pdf-extract-pages","manifestUrl":"https://toolsly.tools/pdf-extract-pages/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"text","key":"pages","label":"Pages to extract","defaultValue":"","placeholder":"1-3, 7, 10-12","help":"List page numbers and ranges separated by commas."}],"invocation":{"webUi":"https://toolsly.tools/pdf-extract-pages","api":null}},{"kind":"converter","slug":"pdf-merge","name":"Merge PDF","description":"Combine multiple PDF files into a single PDF — in the order you select them, all in your browser.","longDescription":"Drop in two or more PDF files and download a single merged PDF. Pages from each document are appended in the exact order you uploaded the files, with the original page sizes, orientations and content preserved. Everything happens locally in your browser — your documents are never uploaded to a server.","category":"document","categoryName":"Document","keywords":["merge pdf","merge pdf online","merge pdf free","combine pdfs","combine pdf files","join pdf files","pdf merger","merge multiple pdfs","concatenate pdfs","merge pdf in browser","pdf combiner","merge pdfs into one"],"url":"https://toolsly.tools/pdf-merge","manifestUrl":"https://toolsly.tools/pdf-merge/tool.json","runsOn":"client","multiple":true,"batch":true,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[],"invocation":{"webUi":"https://toolsly.tools/pdf-merge","api":null}},{"kind":"converter","slug":"pdf-metadata-editor","name":"Edit PDF Metadata","description":"Update a PDF's Title, Author, Subject and Keywords — all in your browser.","longDescription":"Drop in a PDF and edit its document-info metadata: Title, Author, Subject and Keywords (comma-separated). Leave a field blank to keep the existing value, or toggle \"Clear blank fields\" to wipe blanks instead. The Producer is updated to Toolsly and the modification date is refreshed on save. Everything runs locally — your file is never uploaded.","category":"document","categoryName":"Document","keywords":["edit pdf metadata","pdf metadata editor","change pdf author","change pdf title","edit pdf properties","set pdf keywords","pdf metadata online","edit pdf metadata free","update pdf info","pdf document properties","edit pdf subject","metadata pdf in browser"],"url":"https://toolsly.tools/pdf-metadata-editor","manifestUrl":"https://toolsly.tools/pdf-metadata-editor/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"text","key":"title","label":"Title","defaultValue":"","placeholder":"Leave blank to keep the existing value"},{"type":"text","key":"author","label":"Author","defaultValue":""},{"type":"text","key":"subject","label":"Subject","defaultValue":""},{"type":"text","key":"keywords","label":"Keywords","defaultValue":"","placeholder":"comma, separated, keywords"},{"type":"boolean","key":"clearOthers","label":"Clear blank fields (instead of keeping existing values)","defaultValue":false}],"invocation":{"webUi":"https://toolsly.tools/pdf-metadata-editor","api":null}},{"kind":"converter","slug":"pdf-reorder-pages","name":"Reorder PDF Pages","description":"Rearrange the pages of a PDF into any order — all in your browser, no upload.","longDescription":"Drop in a PDF and specify the new page order as a comma-separated list (e.g. \"3, 1, 2, 4\" for a 4-page document). Every page must appear exactly once. The output is a new PDF with pages re-sequenced into the order you provided. Everything runs locally in your browser.","category":"document","categoryName":"Document","keywords":["reorder pdf pages","rearrange pdf pages","reorganize pdf pages","shuffle pdf pages","pdf page reorder","change pdf page order","swap pdf pages","reorder pdf online","rearrange pdf free","sort pdf pages","move pdf pages","reorder pdf in browser"],"url":"https://toolsly.tools/pdf-reorder-pages","manifestUrl":"https://toolsly.tools/pdf-reorder-pages/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"text","key":"order","label":"New page order","defaultValue":"","placeholder":"3, 1, 2, 4","help":"Comma-separated list of page numbers. Every page must appear exactly once."}],"invocation":{"webUi":"https://toolsly.tools/pdf-reorder-pages","api":null}},{"kind":"converter","slug":"pdf-rotate-pages","name":"Rotate PDF Pages","description":"Rotate selected pages of a PDF by 90, 180 or 270 degrees — in your browser.","longDescription":"Drop in a PDF, pick which pages to rotate (e.g. \"1, 3-5, 7\" or leave \"all\"), and choose 90°, 180° or 270° of clockwise rotation. Rotations are added on top of any existing page rotation, so 90° + 90° becomes 180°. Everything runs locally — your file never leaves your browser.","category":"document","categoryName":"Document","keywords":["rotate pdf","rotate pdf pages","rotate pdf online","rotate pdf free","turn pdf page","flip pdf page","fix pdf rotation","rotate pdf 90 degrees","rotate pdf 180 degrees","rotate pdf 270 degrees","rotate pdf in browser","pdf orientation fix"],"url":"https://toolsly.tools/pdf-rotate-pages","manifestUrl":"https://toolsly.tools/pdf-rotate-pages/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"select","key":"degrees","label":"Rotation","defaultValue":"90","choices":[{"value":"90","label":"90° clockwise"},{"value":"180","label":"180°"},{"value":"270","label":"270° (= 90° counter-clockwise)"}]},{"type":"text","key":"pages","label":"Pages to rotate","defaultValue":"all","placeholder":"all  or  1, 3-5, 7","help":"Use \"all\" to rotate every page, or list pages and ranges separated by commas."}],"invocation":{"webUi":"https://toolsly.tools/pdf-rotate-pages","api":null}},{"kind":"converter","slug":"pdf-split","name":"Split PDF","description":"Split a PDF into one file per page, or by custom page ranges — bundled in a ZIP, in your browser.","longDescription":"Drop in a PDF and download a ZIP archive containing the split output. In One-PDF-per-page mode you get N files named page-001.pdf, page-002.pdf, etc. In Custom-ranges mode each comma-separated range (e.g. \"1-3, 5, 7-9\") becomes its own output PDF, so you can carve out chapters or sections in a single pass. All processing happens locally in your browser — your file is never uploaded.","category":"document","categoryName":"Document","keywords":["split pdf","split pdf online","split pdf free","pdf splitter","extract pdf pages","pdf to multiple pdfs","separate pdf pages","split pdf by page","split pdf by range","break pdf into pages","pdf page extractor","split pdf in browser"],"url":"https://toolsly.tools/pdf-split","manifestUrl":"https://toolsly.tools/pdf-split/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".zip","mimeType":"application/zip"},"options":[{"type":"select","key":"mode","label":"Split mode","defaultValue":"pages","choices":[{"value":"pages","label":"One PDF per page"},{"value":"ranges","label":"Custom page ranges"}],"help":"Custom ranges accepts a list like \"1-3, 5, 7-9\" — each entry becomes one output PDF."},{"type":"text","key":"ranges","label":"Ranges","defaultValue":"","placeholder":"1-3, 5, 7-9","help":"Used only in Custom-ranges mode. Each entry becomes one output PDF."}],"invocation":{"webUi":"https://toolsly.tools/pdf-split","api":null}},{"kind":"converter","slug":"pdf-to-docx","name":"PDF to Word (DOCX)","description":"Extract text from a PDF and re-package it as an editable Word .docx — free, online, no upload.","longDescription":"Drop in a PDF and download a .docx you can open in Word, Google Docs or LibreOffice. We extract text page-by-page using pdf.js, group items into paragraphs by their vertical position, and build a clean Word document with the `docx` library. Heads up: this preserves text content, but images, complex table layouts and Word-specific styling don't survive — for that workflow, Adobe Acrobat is still your friend. Scanned (image-only) PDFs won't yield any text without OCR, which we don't do. Runs entirely in your browser — your PDF never leaves this page.","category":"document","categoryName":"Document","keywords":["pdf to word","pdf to docx","convert pdf to word","convert pdf to docx","pdf to word converter","pdf to word online","pdf to word free","convert pdf documents to word","convert pdf doc to word","online pdf to word","free pdf to word converter","pdf to editable word"],"url":"https://toolsly.tools/pdf-to-docx","manifestUrl":"https://toolsly.tools/pdf-to-docx/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".docx","mimeType":"application/vnd.openxmlformats-officedocument.wordprocessingml.document"},"options":[{"type":"boolean","key":"includePageBreaks","label":"Insert page breaks between PDF pages","defaultValue":true}],"invocation":{"webUi":"https://toolsly.tools/pdf-to-docx","api":null}},{"kind":"converter","slug":"pdf-to-images","name":"PDF to Images","description":"Extract every page of a PDF as a PNG image — bundled in a single ZIP, in your browser.","longDescription":"Drop in a PDF and download a ZIP containing one PNG per page, named page-001.png, page-002.png, etc. Pick a render scale to balance sharpness against file size — 1× matches the PDF's native resolution, 2× (default) produces noticeably crisper output for screenshots and slides, and 3–4× is good for printable quality. All rendering happens locally in your browser via PDF.js; your file is never uploaded.","category":"document","categoryName":"Document","keywords":["pdf to images","pdf to image","extract images from pdf","pdf pages to images","convert pdf to images","pdf to png zip","pdf to image converter","pdf page extractor","pdf to image online","pdf to image free","save pdf pages as images","pdf rasterizer"],"url":"https://toolsly.tools/pdf-to-images","manifestUrl":"https://toolsly.tools/pdf-to-images/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".zip","mimeType":"application/zip"},"options":[{"type":"number","key":"scale","label":"Render scale","defaultValue":2,"min":1,"max":4,"step":1,"help":"Higher = sharper output but larger file. 2 is a good default."}],"invocation":{"webUi":"https://toolsly.tools/pdf-to-images","api":null}},{"kind":"converter","slug":"pdf-to-jpg","name":"PDF to JPG","description":"Render every page of a PDF as a JPG — tunable quality, packed in a ZIP, runs online.","longDescription":"Drop in a PDF and download a ZIP of one JPG per page (page-001.jpg, page-002.jpg, …). JPG produces much smaller files than PNG for photo-heavy or full-color pages — pick a quality between 1 and 100 to trade off size against fidelity. Pick a render scale to control output sharpness (1× native, 2× default, up to 4× for printable quality). All rendering happens locally via PDF.js; your file never leaves your device.","category":"document","categoryName":"Document","keywords":["pdf to jpg","pdf to jpeg","convert pdf to jpg","pdf to jpg converter","pdf pages to jpg","pdf to jpg online","pdf to jpg free","save pdf as jpg","pdf to jpeg online","pdf to jpg zip","pdf jpeg export","convert pdf pages to images"],"url":"https://toolsly.tools/pdf-to-jpg","manifestUrl":"https://toolsly.tools/pdf-to-jpg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".zip","mimeType":"application/zip"},"options":[{"type":"number","key":"scale","label":"Render scale","defaultValue":2,"min":1,"max":4,"step":1,"help":"Higher = sharper output but larger file. 2 is a good default."},{"type":"number","key":"quality","label":"JPG quality","defaultValue":92,"min":1,"max":100,"step":1,"help":"Higher = larger file, less compression noise."}],"invocation":{"webUi":"https://toolsly.tools/pdf-to-jpg","api":null}},{"kind":"converter","slug":"pdf-to-png","name":"PDF to PNG","description":"Render every page of a PDF as a PNG image — lossless, packed in a ZIP, runs online.","longDescription":"Drop in a PDF and download a ZIP containing one PNG per page (page-001.png, page-002.png, …). PNG is lossless, so you get perfectly crisp rasterized pages — great for slide decks, contracts, and design references. Pick a render scale: 1× matches the PDF's native size, 2× (default) is sharper, 3–4× gives print-grade quality. All rendering runs locally in your browser via PDF.js; your file never leaves your device.","category":"document","categoryName":"Document","keywords":["pdf to png","convert pdf to png","pdf to png converter","pdf pages to png","extract pdf as png","pdf to png online","pdf to png free","save pdf as png","pdf page to png","pdf to png zip","pdf png export","lossless pdf rasterizer"],"url":"https://toolsly.tools/pdf-to-png","manifestUrl":"https://toolsly.tools/pdf-to-png/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".zip","mimeType":"application/zip"},"options":[{"type":"number","key":"scale","label":"Render scale","defaultValue":2,"min":1,"max":4,"step":1,"help":"Higher = sharper output but larger file. 2 is a good default."}],"invocation":{"webUi":"https://toolsly.tools/pdf-to-png","api":null}},{"kind":"converter","slug":"pdf-to-txt","name":"PDF to TXT","description":"Extract the text layer from a PDF as a plain-text (.txt) file — free online, no upload.","longDescription":"Drop in a PDF and download a .txt file with the document's text content. Pages are separated by a `--- page N ---` marker (you can turn this off). Caveat: this reads the PDF's embedded text layer via PDF.js — for scanned PDFs that contain only page images, no text will come out (you'd need OCR, which this tool does not perform). For text-native PDFs the result is usually clean enough for grep, search, or feeding to another tool. Runs entirely in your browser.","category":"document","categoryName":"Document","keywords":["pdf to txt","pdf to text","pdf to text extract","extract text from pdf","pdf to txt converter","pdf text extractor","convert pdf to text","pdf to plain text","pdf to text online free","free pdf to text","pdf text extraction","pdf to txt online","save pdf text as txt"],"url":"https://toolsly.tools/pdf-to-txt","manifestUrl":"https://toolsly.tools/pdf-to-txt/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".txt","mimeType":"text/plain"},"options":[{"type":"boolean","key":"pageMarkers","label":"Include page markers","defaultValue":true,"help":"Insert a `--- page N ---` line between each page's text."}],"invocation":{"webUi":"https://toolsly.tools/pdf-to-txt","api":null}},{"kind":"converter","slug":"pdf-unlock","name":"Unlock PDF","description":"Strip permission restrictions (print/copy/edit) from a PDF — in your browser, no upload.","longDescription":"Drop in a PDF whose viewer is blocking print, copy or edit because of an owner-password permission flag, and download a copy with those restrictions removed. This tool only removes owner-level permission restrictions — it cannot decrypt a PDF that requires a password just to open (true encryption). For password-protected PDFs that won't even open in a viewer, you'll need a dedicated decryption tool. The password field below is unused today and reserved for a future encryption-capable backend. Everything runs locally — your file is never uploaded.","category":"document","categoryName":"Document","keywords":["unlock pdf","unlock pdf online","unlock pdf free","remove pdf restrictions","remove pdf password","pdf permissions remover","enable print pdf","enable copy pdf","pdf unlocker","unsecure pdf","remove owner password pdf","unlock pdf in browser"],"url":"https://toolsly.tools/pdf-unlock","manifestUrl":"https://toolsly.tools/pdf-unlock/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".pdf"],"mimeTypes":["application/pdf"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"text","key":"password","label":"Password (if any)","defaultValue":"","password":true,"placeholder":"Leave blank if the PDF opens without a password","help":"Currently unused — this tool can only strip owner-level restrictions, not real encryption."}],"invocation":{"webUi":"https://toolsly.tools/pdf-unlock","api":null}},{"kind":"utility","slug":"percentage-calculator","name":"Percentage Calculator","description":"Compute percent of a number, the percentage one number is of another, and percentage change.","longDescription":"Three percentage calculations in one tool: 'What is X% of Y?', 'X is what percent of Y?', and 'percent increase / decrease from X to Y?'. Pick the mode and fill in the two numbers. Runs locally in your browser.","category":"calc","categoryName":"Calculators","keywords":["percentage calculator","percent calculator","percentage of a number","percent change calculator","percent increase calculator","percent decrease calculator","percentage difference","online percentage calculator","free percentage calculator","how to calculate percentage","percent of percent","percentage formula"],"badge":"Calculator","url":"https://toolsly.tools/percentage-calculator","manifestUrl":"https://toolsly.tools/percentage-calculator/tool.json","inputs":[{"type":"select","key":"mode","label":"Mode","defaultValue":"of","choices":[{"value":"of","label":"What is X% of Y?"},{"value":"is","label":"X is what % of Y?"},{"value":"change","label":"% change from X to Y"}]},{"type":"number","key":"x","label":"X","defaultValue":25},{"type":"number","key":"y","label":"Y","defaultValue":200}],"outputs":[{"key":"result","label":"Result"},{"key":"formula","label":"Formula"}],"invocation":{"webUi":"https://toolsly.tools/percentage-calculator","api":null}},{"kind":"utility","slug":"pin-block","name":"ISO 9564 PIN Block","description":"Generate an ISO 9564 PIN block (formats 0, 1 and 3) from a PIN and PAN — runs locally in your browser.","longDescription":"Builds the cleartext PIN block exactly as defined by ISO 9564-1: format 0/3 XORs the PIN field against the PAN field; format 1 uses random padding with no PAN. The output is the 16-hex-digit cleartext block — the same value you'd encrypt under a PIN encryption key before sending it to a HSM. No actual encryption is performed and nothing is sent over the network.","category":"payment","categoryName":"Payment & cards","keywords":["pin block generator","iso 9564 pin block","pin block format 0","pin block format 3","ansi x9 8 pin block","pin block calculator","pin block tool online","pin block tool free","build pin block","iso 0 pin block","iso 3 pin block","pin block from pan"],"badge":"Generator","url":"https://toolsly.tools/pin-block","manifestUrl":"https://toolsly.tools/pin-block/tool.json","inputs":[{"type":"text","key":"pin","label":"PIN","placeholder":"1234","monospace":true,"help":"4-12 digits."},{"type":"text","key":"pan","label":"PAN (only for formats 0 and 3)","placeholder":"4111111111111111","monospace":true,"help":"Spaces and dashes are stripped. Ignored for format 1."},{"type":"select","key":"format","label":"Format","defaultValue":"0","choices":[{"value":"0","label":"Format 0 (ISO-0 / ANSI X9.8)"},{"value":"1","label":"Format 1 (random pad, no PAN)"},{"value":"3","label":"Format 3 (ISO-3, random A-F pad)"}]}],"outputs":[{"key":"pinBlock","label":"PIN block (cleartext)"},{"key":"pinField","label":"PIN field"},{"key":"panField","label":"PAN field"}],"invocation":{"webUi":"https://toolsly.tools/pin-block","api":null}},{"kind":"utility","slug":"placeholder-image-url","name":"Placeholder Image URL Generator","description":"Build URLs for placeholder images — picsum.photos, placeholder.com, dummyimage.com and ui-avatars — with the matching HTML/Markdown/BBCode snippets.","longDescription":"Stop hand-typing placeholder.com URLs. Pick a provider (Picsum for realistic photos, placeholder.com or dummyimage.com for coloured rectangles with text, ui-avatars for initials-style avatars), set the size and optional colours/label, and get the URL plus ready-to-paste `<img>`, Markdown `![alt](url)` and BBCode `[img]...[/img]` snippets. Useful for design mocks, README screenshots, dev seed data, and Lorem-Ipsum-of-images workflows.","category":"text","categoryName":"Text & Encoding","keywords":["placeholder image url generator","placeholder.com generator","picsum.photos url","dummyimage generator","lorem picsum url","ui avatars url generator","placeholder image link","fake image url","stub image url","img tag generator","markdown image url generator","design mockup image","html img snippet","random image url","avatar url builder"],"badge":"Generator","url":"https://toolsly.tools/placeholder-image-url","manifestUrl":"https://toolsly.tools/placeholder-image-url/tool.json","inputs":[{"type":"select","key":"provider","label":"Provider","defaultValue":"picsum","choices":[{"value":"picsum","label":"picsum.photos (realistic photos)"},{"value":"placeholder","label":"placeholder.com (coloured rectangles + text)"},{"value":"dummyimage","label":"dummyimage.com (coloured rectangles + text)"},{"value":"ui-avatars","label":"ui-avatars.com (initials-style avatars)"}]},{"type":"number","key":"width","label":"Width (px)","defaultValue":800,"min":16,"max":2000,"step":1},{"type":"number","key":"height","label":"Height (px)","defaultValue":600,"min":16,"max":2000,"step":1},{"type":"text","key":"seed","label":"Seed (picsum only — locks the image)","defaultValue":"","placeholder":"any string, e.g. 'kitten'"},{"type":"text","key":"bgColor","label":"Background color (placeholder/dummyimage/avatars)","defaultValue":"cccccc","placeholder":"hex without # — e.g. ff0000"},{"type":"text","key":"textColor","label":"Text color (placeholder/dummyimage/avatars)","defaultValue":"333333","placeholder":"hex without #"},{"type":"text","key":"label","label":"Label (placeholder/dummyimage) or Name (avatars)","defaultValue":"","placeholder":"e.g. 'Hello' or 'Jane Doe'"},{"type":"boolean","key":"grayscale","label":"Grayscale (picsum only)","defaultValue":false},{"type":"number","key":"blur","label":"Blur 0-10 (picsum only — 0 = sharp)","defaultValue":0,"min":0,"max":10,"step":1}],"outputs":[{"key":"url","label":"URL"},{"key":"htmlImg","label":"HTML <img>"},{"key":"markdownImg","label":"Markdown"},{"key":"bbcode","label":"BBCode"},{"key":"cssBackground","label":"CSS background-image"}],"invocation":{"webUi":"https://toolsly.tools/placeholder-image-url","api":null}},{"kind":"converter","slug":"png-compress","name":"PNG Compress","description":"Shrink PNG file size by quantizing the color palette — typically 50-80% smaller with near-identical quality.","longDescription":"Like TinyPNG, but it runs entirely in your browser. We decode the PNG, quantize the image to a smaller indexed-color palette (using a perceptual algorithm), then re-encode as an indexed-color PNG. For photo-like PNGs and screenshots this is usually 50–80% smaller than the original with no visible loss. Transparency is preserved. Files never leave your device.","category":"image","categoryName":"Image","keywords":["png compress","compress png","png compressor","png optimizer","compress png online","png compress free","shrink png","reduce png size","png file size reducer","tinypng alternative","image compressor","lossy png compression"],"url":"https://toolsly.tools/png-compress","manifestUrl":"https://toolsly.tools/png-compress/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png"],"mimeTypes":["image/png"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"select","key":"colors","label":"Color palette size","defaultValue":"256","choices":[{"value":"256","label":"256 colors (highest quality)"},{"value":"128","label":"128 colors"},{"value":"64","label":"64 colors"},{"value":"32","label":"32 colors (smallest file)"}],"help":"Fewer colors = smaller file but more visible banding on smooth gradients."}],"invocation":{"webUi":"https://toolsly.tools/png-compress","api":null}},{"kind":"converter","slug":"png-cropper","name":"PNG Cropper","description":"Crop PNG images in your browser — keeps transparency, lossless output, no upload.","longDescription":"Drop in a PNG, drag a selection rectangle over the area you want, and download the cropped PNG. Transparency is preserved exactly because PNG is lossless. Conversion runs entirely in your browser — your file never gets uploaded.","category":"image","categoryName":"Image","keywords":["png cropper","crop png online","crop png free","png crop tool","online png cropper","crop png image","free png cropper","png crop online","crop transparent png","lossless png cropper","trim png online","browser png cropper"],"url":"https://toolsly.tools/png-cropper","manifestUrl":"https://toolsly.tools/png-cropper/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png"],"mimeTypes":["image/png"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/png-cropper","api":null}},{"kind":"converter","slug":"png-to-avif","name":"PNG to AVIF","description":"Convert PNG images to AVIF — next-gen compression, runs in your browser.","longDescription":"Drop in a PNG and download an AVIF. AVIF typically produces 40–50% smaller files than PNG at the same visual quality and keeps transparency. Note: AVIF encoding requires a recent Chromium-based browser (Chrome, Edge, Brave, Opera). Conversion happens locally — files never leave your device.","category":"image","categoryName":"Image","keywords":["png to avif","convert png to avif","png to avif converter","png to avif online","png to avif free","png to avif online free","change png to avif","png avif converter","free png to avif","online png to avif converter"],"url":"https://toolsly.tools/png-to-avif","manifestUrl":"https://toolsly.tools/png-to-avif/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png"],"mimeTypes":["image/png"]},"output":{"type":"file","extension":".avif","mimeType":"image/avif"},"options":[{"type":"number","key":"quality","label":"AVIF quality","defaultValue":75,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality. AVIF is efficient — 70–80 looks great."}],"invocation":{"webUi":"https://toolsly.tools/png-to-avif","api":null}},{"kind":"converter","slug":"png-to-bmp","name":"PNG to BMP","description":"Convert PNG images to BMP (Windows Bitmap) — uncompressed, runs in your browser.","longDescription":"Drop in a PNG and download a 24-bit uncompressed BMP. BMP files are large but supported by every Windows app and many legacy tools. Transparent pixels are flattened against the background color you pick — BMP has no alpha channel. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["png to bmp","convert png to bmp","png to bmp converter","png to bmp online","png to bmp free","png to bmp online free","change png to bmp","png bmp converter","free png to bmp","online png to bmp converter"],"url":"https://toolsly.tools/png-to-bmp","manifestUrl":"https://toolsly.tools/png-to-bmp/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png"],"mimeTypes":["image/png"]},"output":{"type":"file","extension":".bmp","mimeType":"image/bmp"},"options":[{"type":"select","key":"background","label":"Background (for transparent areas)","defaultValue":"#ffffff","choices":[{"value":"#ffffff","label":"White"},{"value":"#000000","label":"Black"},{"value":"#f3f4f6","label":"Light gray"}],"help":"BMP has no transparency, so transparent pixels get filled with this color."}],"invocation":{"webUi":"https://toolsly.tools/png-to-bmp","api":null}},{"kind":"converter","slug":"png-to-gif","name":"PNG to GIF","description":"Convert PNG images to GIF — palette-quantized, runs in your browser.","longDescription":"Drop in a PNG and download a single-frame GIF. GIF is limited to 256 colors per frame, so the image is automatically quantized to a 256-color palette. Great for legacy systems, embeds, and simple animations as a starting frame. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["png to gif","convert png to gif","png to gif converter","png to gif online","png to gif free","png to gif online free","change png to gif","png gif converter","free png to gif","online png to gif converter"],"url":"https://toolsly.tools/png-to-gif","manifestUrl":"https://toolsly.tools/png-to-gif/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png"],"mimeTypes":["image/png"]},"output":{"type":"file","extension":".gif","mimeType":"image/gif"},"options":[],"invocation":{"webUi":"https://toolsly.tools/png-to-gif","api":null}},{"kind":"converter","slug":"png-to-ico","name":"PNG to ICO","description":"Convert a PNG into a Windows ICO favicon — pick the icon size, runs in your browser.","longDescription":"Drop in any PNG and download a Windows ICO file you can drop straight into a website (favicon.ico) or use as a desktop shortcut icon. The source is resized to a square at the size you pick (preserving aspect ratio with letterboxing), then embedded as a single PNG-payload entry inside an ICO container. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["png to ico","convert png to ico","png to ico converter","png to ico online","png to ico free","favicon generator","make favicon from png","png to favicon","online png to ico converter","free png to ico","png favicon ico"],"url":"https://toolsly.tools/png-to-ico","manifestUrl":"https://toolsly.tools/png-to-ico/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png"],"mimeTypes":["image/png"]},"output":{"type":"file","extension":".ico","mimeType":"image/x-icon"},"options":[{"type":"select","key":"size","label":"Icon size","defaultValue":"64","choices":[{"value":"16","label":"16 × 16"},{"value":"32","label":"32 × 32"},{"value":"48","label":"48 × 48"},{"value":"64","label":"64 × 64"},{"value":"128","label":"128 × 128"},{"value":"256","label":"256 × 256"}],"help":"Most favicons use 32 or 64. Pick 256 for high-res desktop icons."}],"invocation":{"webUi":"https://toolsly.tools/png-to-ico","api":null}},{"kind":"converter","slug":"png-to-jpg","name":"PNG to JPG","description":"Convert PNG images to JPG (JPEG) — free, fast, runs entirely in your browser.","longDescription":"Drop in any PNG file and download a JPG. Transparency is flattened against a white background by default. Files never leave your device — conversion happens locally in your browser using the Canvas API.","category":"image","categoryName":"Image","keywords":["png to jpg","png to jpeg","convert png to jpg","png to jpg converter","png to jpg online","png to jpg free","change png to jpg","png jpg converter","free png to jpg","online png to jpg converter"],"url":"https://toolsly.tools/png-to-jpg","manifestUrl":"https://toolsly.tools/png-to-jpg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png"],"mimeTypes":["image/png"]},"output":{"type":"file","extension":".jpg","mimeType":"image/jpeg"},"options":[{"type":"number","key":"quality","label":"JPG quality","defaultValue":92,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."},{"type":"select","key":"background","label":"Background (for transparent areas)","defaultValue":"#ffffff","choices":[{"value":"#ffffff","label":"White"},{"value":"#000000","label":"Black"},{"value":"#f3f4f6","label":"Light gray"}],"help":"JPG has no transparency, so transparent pixels get filled with this color."}],"invocation":{"webUi":"https://toolsly.tools/png-to-jpg","api":null}},{"kind":"converter","slug":"png-to-pdf","name":"PNG to PDF","description":"Convert a PNG image into a single-page PDF — fit-to-page, runs in your browser.","longDescription":"Drop in a PNG and download a single-page PDF with the image centered on the page. The image is fit to the page with a small margin, preserving aspect ratio. Transparent pixels are flattened against a white page background (PDF technically supports transparency but most viewers render this most reliably). Choose A4, US Letter, or US Legal; orientation defaults to whichever matches the image aspect. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["png to pdf","convert png to pdf","png to pdf converter","png to pdf online","png to pdf free","png to pdf online free","image to pdf","png image to pdf","free png to pdf","online png to pdf converter","png pdf converter"],"url":"https://toolsly.tools/png-to-pdf","manifestUrl":"https://toolsly.tools/png-to-pdf/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png"],"mimeTypes":["image/png"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"select","key":"pageSize","label":"Page size","defaultValue":"a4","choices":[{"value":"a4","label":"A4"},{"value":"letter","label":"US Letter"},{"value":"legal","label":"US Legal"}]},{"type":"select","key":"orientation","label":"Orientation","defaultValue":"auto","choices":[{"value":"auto","label":"Auto (match image)"},{"value":"portrait","label":"Portrait"},{"value":"landscape","label":"Landscape"}]}],"invocation":{"webUi":"https://toolsly.tools/png-to-pdf","api":null}},{"kind":"converter","slug":"png-to-webp","name":"PNG to WebP","description":"Convert PNG images to WebP — smaller files, same quality, runs in your browser.","longDescription":"Drop in a PNG and download a WebP. WebP keeps transparency and typically produces 25–35% smaller files than PNG at visually identical quality. Conversion happens entirely in your browser using the Canvas API — files never leave your device.","category":"image","categoryName":"Image","keywords":["png to webp","convert png to webp","png to webp converter","png to webp online","png to webp free","png to webp online free","change png to webp","png webp converter","free png to webp","online png to webp converter"],"url":"https://toolsly.tools/png-to-webp","manifestUrl":"https://toolsly.tools/png-to-webp/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png"],"mimeTypes":["image/png"]},"output":{"type":"file","extension":".webp","mimeType":"image/webp"},"options":[{"type":"number","key":"quality","label":"WebP quality","defaultValue":90,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality. 90 is a good default."}],"invocation":{"webUi":"https://toolsly.tools/png-to-webp","api":null}},{"kind":"utility","slug":"pomodoro-timer","name":"Pomodoro Timer (Schedule Calculator)","description":"Plan a pomodoro study session — how many cycles, work + break minutes, total time. It's a planner, not a ticking timer.","longDescription":"The Pomodoro Technique alternates focused 25-minute work blocks with 5-minute breaks, plus a longer 15–30-minute break every 4 pomodoros. This tool builds the full schedule for you: pick how many pomodoros, work and break lengths, and every-N-pomodoros for the long break, and it'll lay out the sequence (Work 25 → Break 5 → Work 25 → ...) plus the total session length and what time you'd finish if you started now. This is a planner — for the actual ticking timer, use a pomodoro app or your phone's clock. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["pomodoro timer","pomodoro calculator","study schedule","pomodoro technique","focus timer","study session planner","work break schedule","25 minute timer","deep work schedule","study planner","tomato timer","productivity timer","focus session","study breaks"],"badge":"Calculator","url":"https://toolsly.tools/pomodoro-timer","manifestUrl":"https://toolsly.tools/pomodoro-timer/tool.json","inputs":[{"type":"number","key":"pomodoros","label":"Number of pomodoros","defaultValue":4,"min":1,"max":50,"step":1},{"type":"number","key":"workMinutes","label":"Work block (minutes)","defaultValue":25,"min":1,"max":240,"step":1},{"type":"number","key":"shortBreakMinutes","label":"Short break (minutes)","defaultValue":5,"min":0,"max":60,"step":1},{"type":"number","key":"longBreakMinutes","label":"Long break (minutes)","defaultValue":15,"min":0,"max":120,"step":1},{"type":"number","key":"longBreakEvery","label":"Long break every N pomodoros","defaultValue":4,"min":1,"max":20,"step":1}],"outputs":[{"key":"schedule","label":"Schedule","multiline":true},{"key":"totalMinutes","label":"Total minutes"},{"key":"totalHours","label":"Total hours"},{"key":"endTimeIfStartNow","label":"End time if start now"}],"invocation":{"webUi":"https://toolsly.tools/pomodoro-timer","api":null}},{"kind":"converter","slug":"qr-code-generator","name":"QR Code Generator","description":"Generate a QR code from any text, URL or contact data — pick error correction and scale, get a PNG.","longDescription":"Paste or upload text and produce a high-quality QR code PNG. Choose the error-correction level (L = ~7% recovery, M = 15%, Q = 25%, H = 30%) and the pixel scale per module. The QR encoder runs entirely in your browser — your data is never uploaded.","category":"text","categoryName":"Text & Encoding","keywords":["qr code generator","qr generator","text to qr","url to qr","qr code maker","qr code creator","qr code online","qr code free","generate qr code png","wifi qr code","vcard qr code","qr image generator","high quality qr code"],"url":"https://toolsly.tools/qr-code-generator","manifestUrl":"https://toolsly.tools/qr-code-generator/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".txt"],"mimeTypes":["text/plain"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"select","key":"errorCorrection","label":"Error correction","defaultValue":"M","choices":[{"value":"L","label":"Low (~7% recovery)"},{"value":"M","label":"Medium (~15%)"},{"value":"Q","label":"Quartile (~25%)"},{"value":"H","label":"High (~30%)"}]},{"type":"number","key":"scale","label":"Scale (pixels per module)","defaultValue":8,"min":4,"max":16,"step":1}],"invocation":{"webUi":"https://toolsly.tools/qr-code-generator","api":null}},{"kind":"converter","slug":"qr-code-reader","name":"QR Code Reader","description":"Scan a QR code from any image and decode it to text — free, online, runs entirely in your browser.","longDescription":"Drop in a screenshot or photo of a QR code (PNG, JPG, WebP, GIF, BMP) and download the decoded text as a .txt file. The decoder uses jsQR running locally in your browser — your image never leaves your device, which matters when the QR encodes a Wi-Fi password, a payment URL, a vCard or any other sensitive payload. Works on QR codes embedded in screenshots, posters, receipts, business cards and event tickets.","category":"text","categoryName":"Text & Encoding","keywords":["qr code reader","qr code reader online","qr code reader free","scan qr code from image","qr code scanner online","decode qr code online","qr code to text","free qr code reader","qr scanner","read qr code from picture","qr code decoder","image to qr code text","qr code reader from screenshot"],"url":"https://toolsly.tools/qr-code-reader","manifestUrl":"https://toolsly.tools/qr-code-reader/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp",".gif",".bmp"],"mimeTypes":["image/png","image/jpeg","image/webp","image/gif","image/bmp"]},"output":{"type":"file","extension":".txt","mimeType":"text/plain"},"options":[],"invocation":{"webUi":"https://toolsly.tools/qr-code-reader","api":null}},{"kind":"utility","slug":"quoted-printable-decode","name":"Quoted-Printable Decode","description":"Decode Quoted-Printable (RFC 2045) text back to UTF-8 — handles =XX escapes and soft line breaks (=\\r\\n).","longDescription":"Paste a Quoted-Printable encoded string (the MIME encoding used for most email bodies that mix ASCII with the occasional accented character) and recover the original UTF-8 text. Soft line breaks (=\\r\\n or =\\n) are removed, =XX hex escapes are decoded byte-by-byte, and the resulting byte stream is parsed as UTF-8. Useful for reading raw MIME parts, debugging mailers, or recovering data from saved .eml files. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["quoted printable decode","qp decode","quoted-printable decoder","rfc 2045 decode","mime decode","email body decoder","quoted printable to text","convert quoted printable to text","decode quoted printable","qp decoder online","quoted printable converter","decode =XX","qp utf8 decode"],"badge":"Decoder","url":"https://toolsly.tools/quoted-printable-decode","manifestUrl":"https://toolsly.tools/quoted-printable-decode/tool.json","inputs":[{"type":"text","key":"encoded","label":"Quoted-Printable encoded","placeholder":"Na=C3=AFve r=C3=A9sum=C3=A9 =E2=80=94 voil=C3=A0!","multiline":true,"monospace":true}],"outputs":[{"key":"text","label":"Decoded text","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/quoted-printable-decode","api":null}},{"kind":"utility","slug":"quoted-printable-encode","name":"Quoted-Printable Encode","description":"Encode text to Quoted-Printable (RFC 2045) — for email bodies. Non-ASCII bytes become =XX, lines soft-wrap at 76 columns.","longDescription":"Quoted-Printable is the MIME encoding designed for email bodies that are mostly ASCII but contain occasional non-ASCII characters (think accented letters, em-dashes, smart quotes). Each byte outside printable ASCII becomes =XX (uppercase hex), the literal = is encoded as =3D, and any line longer than 76 characters is soft-wrapped with a trailing =CRLF. This tool encodes your text as UTF-8 and applies all the RFC 2045 §6.7 rules. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["quoted printable encode","qp encode","quoted-printable encoder","rfc 2045 encode","mime encode","email body encoder","text to quoted printable","convert text to quoted printable","encode quoted printable","qp encoder online","quoted printable converter","mime body encoder","qp utf8 encode"],"badge":"Encoder","url":"https://toolsly.tools/quoted-printable-encode","manifestUrl":"https://toolsly.tools/quoted-printable-encode/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Naïve résumé — voilà!","multiline":true,"monospace":true}],"outputs":[{"key":"encoded","label":"Quoted-Printable encoded","multiline":true},{"key":"originalSize","label":"Original size (bytes)"},{"key":"encodedSize","label":"Encoded size (chars)"}],"invocation":{"webUi":"https://toolsly.tools/quoted-printable-encode","api":null}},{"kind":"utility","slug":"random-color","name":"Random Color Generator","description":"Generate N cryptographically-random colors with optional pastel / vibrant / dark / light constraints.","longDescription":"Generate random colors using `crypto.getRandomValues` — high-quality randomness, never pseudo-random `Math.random()`. Pick the output format (Hex, RGB, or HSL) and choose a palette constraint to keep results visually coherent: Pastel clamps saturation to a soft range and lightness high; Vibrant maximises saturation around mid-lightness; Dark and Light push lightness to the ends. Useful for placeholder UI, design exploration, identicon-style coloring, or seeding test data. All generation runs in your browser — no API, no upload, no rate limit.","category":"color","categoryName":"Color","keywords":["random color generator","random color online","random hex color","random rgb","random hsl","random pastel colors","random vibrant colors","random dark color","random light color","color palette generator free","crypto random color","secure random color","random color picker"],"badge":"Generator","url":"https://toolsly.tools/random-color","manifestUrl":"https://toolsly.tools/random-color/tool.json","inputs":[{"type":"number","key":"count","label":"Count","defaultValue":5,"min":1,"max":50,"step":1,"help":"How many colors to generate (1–50)."},{"type":"select","key":"format","label":"Output format","defaultValue":"hex","choices":[{"value":"hex","label":"Hex (#RRGGBB)"},{"value":"rgb","label":"RGB"},{"value":"hsl","label":"HSL"}]},{"type":"select","key":"palette","label":"Palette","defaultValue":"any","choices":[{"value":"any","label":"Any"},{"value":"pastel","label":"Pastel"},{"value":"vibrant","label":"Vibrant"},{"value":"dark","label":"Dark"},{"value":"light","label":"Light"}],"help":"Constrain saturation and lightness to a visual style."}],"outputs":[{"key":"list","label":"Colors","multiline":true},{"key":"swatches","label":"Preview","multiline":true},{"key":"css","label":"CSS array","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/random-color","api":null}},{"kind":"utility","slug":"random-number-generator","name":"Random Number Generator","description":"Generate uniform random integers in a range — uses crypto.getRandomValues for true uniformity.","longDescription":"Generate one or more random integers in a range you choose. Pick min, max, count, whether all results must be unique (e.g. for lottery numbers) and the output format (one per line or comma-separated). Backed by crypto.getRandomValues with rejection sampling. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["random number generator","rng","random integer generator","lottery number generator","dice roller","random number online","random number free","secure random number","uniform random number","unique random numbers","random picker","random sample generator","crypto rng"],"badge":"Generator","url":"https://toolsly.tools/random-number-generator","manifestUrl":"https://toolsly.tools/random-number-generator/tool.json","inputs":[{"type":"number","key":"min","label":"Min","defaultValue":1,"step":1},{"type":"number","key":"max","label":"Max","defaultValue":100,"step":1},{"type":"number","key":"count","label":"How many","defaultValue":10,"min":1,"max":100,"step":1},{"type":"boolean","key":"unique","label":"All values unique (no duplicates)","defaultValue":false},{"type":"select","key":"format","label":"Format","defaultValue":"lines","choices":[{"value":"lines","label":"One per line"},{"value":"csv","label":"CSV (comma-separated)"}]}],"outputs":[{"key":"numbers","label":"Numbers","multiline":true},{"key":"count","label":"Generated"}],"invocation":{"webUi":"https://toolsly.tools/random-number-generator","api":null}},{"kind":"utility","slug":"random-picker","name":"Random Picker","description":"Pick random items from a list — names, options, prizes. Cryptographically fair, with or without duplicates.","longDescription":"Paste a list of names, options, or prizes (one per line) and pick one or more at random. Use 'allow duplicates' off for things like raffle winners (each name only wins once); leave it on if you want each pick to be independent. The picker uses crypto.getRandomValues with rejection sampling so every entry has exactly equal odds — no bias from the cheap-and-easy `Math.floor(Math.random() * n)` approach. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["random picker","random name picker","decision wheel","pick a random name","raffle picker","random choice","random selection","choose at random","name picker","winner picker","lucky draw","random list","shuffle and pick","pick a card"],"badge":"Random","url":"https://toolsly.tools/random-picker","manifestUrl":"https://toolsly.tools/random-picker/tool.json","inputs":[{"type":"text","key":"items","label":"Items (one per line)","multiline":true,"defaultValue":"Alice\nBob\nCharlie\nDana\nEve","placeholder":"One item per line"},{"type":"number","key":"pick","label":"How many to pick","defaultValue":1,"min":1,"max":50,"step":1},{"type":"boolean","key":"allowDuplicates","label":"Allow duplicates","defaultValue":false,"help":"Off: each item picked at most once (raffle mode). On: each pick is independent."}],"outputs":[{"key":"picked","label":"Picked","multiline":true},{"key":"count","label":"Items in pool"}],"invocation":{"webUi":"https://toolsly.tools/random-picker","api":null}},{"kind":"utility","slug":"random-string-generator","name":"Random String Generator","description":"Generate batches of random strings — pick charset, length and count, all sourced from crypto.getRandomValues.","longDescription":"Generate up to 50 random strings of a chosen length and character set in one go. Charset options cover alphanumeric, letters only, digits, hex, and URL-safe Base64. Uses crypto.getRandomValues with rejection sampling so the distribution is uniform. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["random string generator","random text generator","random token generator","random hex generator","random alphanumeric","bulk random strings","random string online","random string free","random id generator","random key generator","secure random string","url safe random","crypto random string"],"badge":"Generator","url":"https://toolsly.tools/random-string-generator","manifestUrl":"https://toolsly.tools/random-string-generator/tool.json","inputs":[{"type":"number","key":"count","label":"How many","defaultValue":10,"min":1,"max":50,"step":1},{"type":"number","key":"length","label":"Length of each","defaultValue":16,"min":1,"max":256,"step":1},{"type":"select","key":"charset","label":"Charset","defaultValue":"alphanumeric","choices":[{"value":"alphanumeric","label":"Alphanumeric (A-Z, a-z, 0-9)"},{"value":"letters","label":"Letters only"},{"value":"digits","label":"Digits only"},{"value":"hex","label":"Hex (0-9, a-f)"},{"value":"urlsafe-base64","label":"URL-safe Base64 (A-Z, a-z, 0-9, -, _)"}]}],"outputs":[{"key":"strings","label":"Strings","multiline":true},{"key":"count","label":"Generated"}],"invocation":{"webUi":"https://toolsly.tools/random-string-generator","api":null}},{"kind":"utility","slug":"regex-tester","name":"Regex Tester","description":"Test a JavaScript regular expression against sample text — see matches, groups, and a replacement preview.","longDescription":"Type a regex pattern and flags, paste some test text, and instantly see every match with its index and captured groups. Optionally supply a replacement string to preview what String.replace would produce. Compiled with the standard JavaScript RegExp engine and run entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["regex tester","regular expression tester","regex matcher","regex playground","javascript regex tester","regex tool","regex online","regex free","regex replace tester","regex group viewer","regex debugger","regex evaluator","regex match preview"],"badge":"Tester","url":"https://toolsly.tools/regex-tester","manifestUrl":"https://toolsly.tools/regex-tester/tool.json","inputs":[{"type":"text","key":"pattern","label":"Pattern","placeholder":"(\\w+)@(\\w+)","monospace":true},{"type":"text","key":"flags","label":"Flags","defaultValue":"g","placeholder":"g, i, m, s, u, y","monospace":true},{"type":"text","key":"testText","label":"Test text","placeholder":"ada@example.com bob@test.org","multiline":true,"monospace":true},{"type":"text","key":"replacement","label":"Replacement (optional)","placeholder":"$1 at $2","monospace":true}],"outputs":[{"key":"matches","label":"Matches","multiline":true},{"key":"totalMatches","label":"Total matches"},{"key":"replacementPreview","label":"Replacement preview","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/regex-tester","api":null}},{"kind":"converter","slug":"remove-background","name":"Remove Background","description":"Cut out the background of any photo automatically — runs locally in your browser, no upload.","longDescription":"Drop in a photo and download a PNG with a transparent background. We run an AI model (U²-Net family) directly in your browser via WebAssembly, so the image never leaves your device. The first run downloads ~40 MB of model weights (cached for next time), then each conversion takes 2–10 seconds depending on image size and your CPU. Best results on photos of people, products, animals and objects with a clear subject. Output is a transparent PNG ready to drop into a design tool or composite with our Add Background tool.","category":"image","categoryName":"Image","keywords":["remove background","background remover","background remover online","remove background from image","remove background from photo","background remover free","transparent background","make background transparent","remove image background online","free background remover","ai background remover","remove bg","remove white background","cut out background"],"url":"https://toolsly.tools/remove-background","manifestUrl":"https://toolsly.tools/remove-background/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".png",".jpg",".jpeg",".webp"],"mimeTypes":["image/png","image/jpeg","image/webp"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/remove-background","api":null}},{"kind":"utility","slug":"rot13","name":"ROT13","description":"Apply the ROT13 substitution cipher — letters shift by 13, applying twice returns the original.","longDescription":"ROT13 (\"rotate by 13 places\") is a simple letter-substitution cipher that replaces each letter with the one 13 positions later in the alphabet. Since the Latin alphabet has 26 letters, applying ROT13 twice gives the original text — it's its own inverse. Useful for hiding spoilers or puzzle answers. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["rot13","rot13 encoder","rot13 decoder","rot 13 cipher","caesar 13 cipher","rot13 online","rot13 free","rot13 translator","rot13 converter","encode rot13","decode rot13","letter substitution cipher","spoiler hider"],"badge":"Cipher","url":"https://toolsly.tools/rot13","manifestUrl":"https://toolsly.tools/rot13/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Hello, world!","multiline":true,"monospace":true,"help":"Applying ROT13 to the result gives back the original."}],"outputs":[{"key":"result","label":"ROT13 result","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/rot13","api":null}},{"kind":"utility","slug":"rsa-keypair-generator","name":"RSA Key Pair Generator","description":"Generate an RSA private/public key pair as PEM (2048, 3072 or 4096-bit) and a SHA-256 fingerprint of the public key.","longDescription":"Spin up a fresh RSA key pair entirely in your browser using WebCrypto. Pick the modulus length (2048 is the minimum we'd recommend today; 3072 or 4096 for higher-security/longer-lived keys) and the public-key hash (SHA-256/384/512). Output is PEM-encoded — PKCS#8 for the private key, SubjectPublicKeyInfo for the public key — ready to paste into JWT signers, OpenSSL toolchains, or your config. We also print a SHA-256 fingerprint of the public key so you can verify it against records elsewhere. Keys are generated and never leave your device.","category":"text","categoryName":"Text & Encoding","keywords":["rsa key pair generator","rsa private public key online","generate rsa keys online","rsa pem generator","rsa 2048 generator","rsa 4096 generator","pkcs8 private key generator","spki public key generator","rsa keypair online","rsa keys for jwt","rsa key fingerprint","webcrypto rsa generator","rsa-oaep key generator","rsa pem online"],"badge":"Generator","url":"https://toolsly.tools/rsa-keypair-generator","manifestUrl":"https://toolsly.tools/rsa-keypair-generator/tool.json","inputs":[{"type":"select","key":"modulusLength","label":"Modulus length (bits)","defaultValue":"2048","choices":[{"value":"2048","label":"2048 (standard)"},{"value":"3072","label":"3072"},{"value":"4096","label":"4096 (higher security, slower)"}]},{"type":"select","key":"hashAlg","label":"Hash algorithm","defaultValue":"SHA-256","choices":[{"value":"SHA-256","label":"SHA-256"},{"value":"SHA-384","label":"SHA-384"},{"value":"SHA-512","label":"SHA-512"}]},{"type":"select","key":"keyType","label":"Key type","defaultValue":"RSA-OAEP","choices":[{"value":"RSA-OAEP","label":"RSA-OAEP (encryption)"},{"value":"RSASSA-PKCS1-v1_5","label":"RSASSA-PKCS1-v1_5 (signing)"},{"value":"RSA-PSS","label":"RSA-PSS (signing)"}]}],"outputs":[{"key":"privateKeyPem","label":"Private key (PKCS#8 PEM)","multiline":true},{"key":"publicKeyPem","label":"Public key (SPKI PEM)","multiline":true},{"key":"fingerprint","label":"Public key SHA-256 fingerprint"},{"key":"summary","label":"Summary"}],"invocation":{"webUi":"https://toolsly.tools/rsa-keypair-generator","api":null}},{"kind":"utility","slug":"salary-converter","name":"Salary Converter","description":"Convert between hourly, daily, weekly, biweekly, monthly and annual salary — adjust hours/week and weeks/year.","longDescription":"Translate one salary basis into every other so you can compare a $45/hour contract against a $90,000 salary, or work out what a monthly UK salary is in equivalent annual terms. Pick the rate you know, set your hours per week (default 40) and weeks per year (default 52 — drop to 50 if you take 2 weeks unpaid leave), and we'll fill in the others. All conversions are linear — no tax, no benefits, just gross numbers.","category":"calc","categoryName":"Calculators","keywords":["salary converter","hourly to salary","salary to hourly","annual salary calculator","hourly wage calculator","biweekly salary calculator","monthly salary from hourly","yearly salary calculator","salary calculator online","freelance rate calculator","contractor hourly rate","pay period conversion","weekly pay calculator","hourly wage to yearly","salary comparator"],"badge":"Calculator","url":"https://toolsly.tools/salary-converter","manifestUrl":"https://toolsly.tools/salary-converter/tool.json","inputs":[{"type":"number","key":"amount","label":"Amount","defaultValue":50000,"min":0,"step":100},{"type":"select","key":"unit","label":"This amount is paid…","defaultValue":"yearly","choices":[{"value":"hourly","label":"per hour"},{"value":"daily","label":"per day"},{"value":"weekly","label":"per week"},{"value":"biweekly","label":"per 2 weeks (biweekly)"},{"value":"monthly","label":"per month"},{"value":"yearly","label":"per year"}]},{"type":"number","key":"hoursPerWeek","label":"Hours per week","defaultValue":40,"min":1,"max":168,"step":1},{"type":"number","key":"weeksPerYear","label":"Weeks worked per year","defaultValue":52,"min":1,"max":53,"step":1}],"outputs":[{"key":"hourly","label":"Hourly"},{"key":"daily","label":"Daily"},{"key":"weekly","label":"Weekly"},{"key":"biweekly","label":"Biweekly"},{"key":"monthly","label":"Monthly"},{"key":"yearly","label":"Yearly"}],"invocation":{"webUi":"https://toolsly.tools/salary-converter","api":null}},{"kind":"utility","slug":"shade-tint-generator","name":"Shade & Tint Generator","description":"Generate N evenly-spaced shades (darker) and tints (lighter) of any base color — runs locally.","longDescription":"Shades are darker variations of a base color (mixed with black); tints are lighter (mixed with white). This tool interpolates the HSL lightness from 0 (pure black) up through the base color and onward to 100 (pure white), producing N evenly distributed colors that smoothly transition through the base. Set the count between 3 and 20 for a complete dark → mid → light ramp. Useful for building consistent dark-mode palettes, hover/pressed state variants, and design tokens. All math runs in your browser — no upload, no signup.","category":"color","categoryName":"Color","keywords":["shade generator","tint generator","shade and tint generator","color ramp generator","lighter darker color","color shades online","color tints online","color variation generator","tonal palette generator","hsl lightness interpolation","design token colors","shade tint free"],"badge":"Palette","url":"https://toolsly.tools/shade-tint-generator","manifestUrl":"https://toolsly.tools/shade-tint-generator/tool.json","inputs":[{"type":"text","key":"color","label":"Base color","placeholder":"#3b82f6","defaultValue":"#3b82f6","monospace":true,"help":"Hex, rgb(), hsl(), or a CSS color name."},{"type":"number","key":"count","label":"Step count","defaultValue":9,"min":3,"max":20,"step":1,"help":"Total number of colors (shades + tints, including the base midpoint)."}],"outputs":[{"key":"ramp","label":"Shades → tints","multiline":true},{"key":"hexList","label":"Hex list","multiline":true},{"key":"cssVars","label":"CSS variables","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/shade-tint-generator","api":null}},{"kind":"utility","slug":"slugify","name":"Slugify","description":"Convert any text to a clean, URL-safe slug — strips diacritics and replaces non-alphanumerics.","longDescription":"Turn a title or phrase into a slug suitable for URLs, filenames or anchor IDs. Lowercases the string, normalises accents (\"naïve\" → \"naive\"), replaces every non-alphanumeric run with a separator and trims leading/trailing separators. Pick hyphen, underscore or dot. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["slugify","slug generator","url slug","seo slug","url safe text","slug maker","slugify online","slugify free","filename slug","anchor slug","kebab url","slug converter","url friendly text"],"badge":"Transformer","url":"https://toolsly.tools/slugify","manifestUrl":"https://toolsly.tools/slugify/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Hello, World! It's a Naïve Approach","multiline":false},{"type":"select","key":"separator","label":"Separator","defaultValue":"-","choices":[{"value":"-","label":"Hyphen (-)"},{"value":"_","label":"Underscore (_)"},{"value":".","label":"Dot (.)"}]}],"outputs":[{"key":"slug","label":"Slug"}],"invocation":{"webUi":"https://toolsly.tools/slugify","api":null}},{"kind":"utility","slug":"speed-converter","name":"Speed Converter","description":"Convert between m/s, km/h, mph, knots and ft/s — covers driving, flying, sailing and physics units.","longDescription":"Switching between speed units is endlessly annoying — your car shows km/h, your weather app shows mph, the boat radio uses knots, and physics homework wants m/s. Pick the source and target unit, and we'll convert it precisely using the exact definitions (1 mph = 0.44704 m/s exactly, 1 knot = 1852/3600 m/s = 0.5144… m/s). The conversion table covers every unit at once so you can read it at a glance. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["speed converter","mph to kmh","kmh to mph","mph to km/h","km/h to mph","knots to mph","mph to knots","m/s to mph","m/s to km/h","feet per second","velocity converter","convert speed","boat speed knots","mph kph converter"],"badge":"Converter","url":"https://toolsly.tools/speed-converter","manifestUrl":"https://toolsly.tools/speed-converter/tool.json","inputs":[{"type":"number","key":"value","label":"Value","defaultValue":100,"step":0.01},{"type":"select","key":"from","label":"From","defaultValue":"km/h","choices":[{"value":"m/s","label":"m/s (meters per second)"},{"value":"km/h","label":"km/h (kilometers per hour)"},{"value":"mph","label":"mph (miles per hour)"},{"value":"kn","label":"kn (knots, nautical mph)"},{"value":"ft/s","label":"ft/s (feet per second)"}]},{"type":"select","key":"to","label":"To","defaultValue":"mph","choices":[{"value":"m/s","label":"m/s (meters per second)"},{"value":"km/h","label":"km/h (kilometers per hour)"},{"value":"mph","label":"mph (miles per hour)"},{"value":"kn","label":"kn (knots, nautical mph)"},{"value":"ft/s","label":"ft/s (feet per second)"}]}],"outputs":[{"key":"converted","label":"Converted value"},{"key":"mps","label":"In m/s"},{"key":"table","label":"All units","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/speed-converter","api":null}},{"kind":"utility","slug":"sql-formatter","name":"SQL Formatter","description":"Format SQL queries for every major dialect — Postgres, MySQL, SQLite, BigQuery, Snowflake and more.","longDescription":"Paste any SQL query and get a cleanly indented, readable version. Pick from twelve dialects (standard SQL, PostgreSQL, MySQL, SQLite, MariaDB, BigQuery, DB2, Hive, Redshift, Snowflake, Spark, T-SQL) so keywords, functions and quoting are tokenized correctly. Powered by sql-formatter. Runs entirely in your browser — your query never leaves this page.","category":"dev","categoryName":"Dev","keywords":["sql formatter","sql formatter online","format sql online","pretty print sql","sql beautifier","sql prettifier","format sql query","online sql formatter","sql indent","sql formatter free","postgres formatter","mysql formatter","bigquery formatter","tsql formatter"],"badge":"Formatter","url":"https://toolsly.tools/sql-formatter","manifestUrl":"https://toolsly.tools/sql-formatter/tool.json","inputs":[{"type":"text","key":"sql","label":"SQL","placeholder":"select id,name from users where active=1 order by name","multiline":true,"monospace":true},{"type":"select","key":"dialect","label":"Dialect","defaultValue":"sql","choices":[{"value":"sql","label":"Standard SQL"},{"value":"postgresql","label":"PostgreSQL"},{"value":"mysql","label":"MySQL"},{"value":"sqlite","label":"SQLite"},{"value":"mariadb","label":"MariaDB"},{"value":"bigquery","label":"BigQuery"},{"value":"db2","label":"DB2"},{"value":"hive","label":"Hive"},{"value":"redshift","label":"Redshift"},{"value":"snowflake","label":"Snowflake"},{"value":"spark","label":"Spark"},{"value":"tsql","label":"T-SQL (SQL Server)"}]},{"type":"select","key":"indent","label":"Indent","defaultValue":"2","choices":[{"value":"2","label":"2 spaces"},{"value":"4","label":"4 spaces"}]}],"outputs":[{"key":"formatted","label":"Formatted SQL","multiline":true},{"key":"originalSize","label":"Original size (chars)"},{"key":"formattedSize","label":"Formatted size (chars)"}],"invocation":{"webUi":"https://toolsly.tools/sql-formatter","api":null}},{"kind":"utility","slug":"stopwatch","name":"Stopwatch (Duration Calculator)","description":"Format, add, or subtract durations like '1:23:45' or '1h 30m'. Heads up — this is a calculator, not a live stopwatch.","longDescription":"Drop in durations in any common format ('1:23:45', '90:00', '1h 30m', '2.5h', '90s') and format, add, or subtract them. Output is given in HH:MM:SS, total seconds, and a human-readable form like '1h 30m 45s'. Heads up: this is a calculator, not a real-time stopwatch — for an interactive timer you can start and stop, use your phone's clock app. This tool is for the 'how long total did I spend on X' or 'what's 1h 25m plus 47 minutes' kind of question. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["stopwatch","duration calculator","time duration add","time calculator","add hours and minutes","subtract time","time difference calculator","duration formatter","hms calculator","hours minutes seconds","elapsed time","time arithmetic","duration math","format duration"],"badge":"Calculator","url":"https://toolsly.tools/stopwatch","manifestUrl":"https://toolsly.tools/stopwatch/tool.json","inputs":[{"type":"select","key":"mode","label":"Mode","defaultValue":"format","choices":[{"value":"format","label":"Format duration"},{"value":"add","label":"Add durations"},{"value":"sub","label":"Subtract durations"}]},{"type":"text","key":"a","label":"Duration A","defaultValue":"1:23:45","placeholder":"1:23:45 / 1h 23m 45s / 90s"},{"type":"text","key":"b","label":"Duration B","defaultValue":"45m","placeholder":"Only used for add / subtract","help":"Ignored in Format mode."}],"outputs":[{"key":"result","label":"Result (HH:MM:SS)"},{"key":"humanReadable","label":"Human-readable"},{"key":"totalSeconds","label":"Total seconds"},{"key":"totalMinutes","label":"Total minutes"},{"key":"totalHours","label":"Total hours"}],"invocation":{"webUi":"https://toolsly.tools/stopwatch","api":null}},{"kind":"utility","slug":"subnet-calculator","name":"IPv4 Subnet Calculator","description":"Calculate network/broadcast addresses, host range, mask, wildcard mask, host counts, and IP class from a CIDR.","longDescription":"Drop in any IPv4 CIDR like 192.168.1.0/24 or 10.0.0.0/8 and get the full subnet breakdown: network address, broadcast address, usable host range, subnet mask in dotted-decimal and binary, wildcard mask (for ACLs), total and usable host counts, IP class, and whether the range is private (RFC 1918), loopback, link-local, multicast, CGNAT or public. Computation is pure bitwise on 32-bit unsigned integers — runs entirely in your browser.","category":"dev","categoryName":"Dev","keywords":["subnet calculator","cidr calculator","ipv4 subnet calculator","subnet mask calculator","network and broadcast address calculator","host range calculator","wildcard mask calculator","cidr to subnet mask","subnet mask to cidr","rfc 1918 lookup","private ip checker","ip class calculator","subnet split calculator","vlsm calculator","ip address calculator"],"badge":"Calculator","url":"https://toolsly.tools/subnet-calculator","manifestUrl":"https://toolsly.tools/subnet-calculator/tool.json","inputs":[{"type":"text","key":"cidr","label":"CIDR","defaultValue":"192.168.1.0/24","placeholder":"e.g. 192.168.1.0/24","monospace":true}],"outputs":[{"key":"cidrNotation","label":"CIDR"},{"key":"networkAddress","label":"Network address"},{"key":"broadcastAddress","label":"Broadcast address"},{"key":"firstHost","label":"First usable host"},{"key":"lastHost","label":"Last usable host"},{"key":"totalHosts","label":"Total addresses"},{"key":"usableHosts","label":"Usable hosts"},{"key":"subnetMask","label":"Subnet mask"},{"key":"wildcardMask","label":"Wildcard mask"},{"key":"binarySubnetMask","label":"Subnet mask (binary)"},{"key":"ipClass","label":"IP class"},{"key":"ipType","label":"IP type"}],"invocation":{"webUi":"https://toolsly.tools/subnet-calculator","api":null}},{"kind":"converter","slug":"svg-to-jpg","name":"SVG to JPG","description":"Convert SVG vector images to JPG (JPEG) at any size — runs in your browser.","longDescription":"Drop in an SVG and download a JPG at the size you choose. JPG has no transparency, so the SVG is rendered on top of the background color you pick. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["svg to jpg","svg to jpeg","convert svg to jpg","svg to jpg converter","svg to jpg online","svg to jpg free","svg to jpg online free","change svg to jpg","svg jpeg converter","free svg to jpg","online svg to jpg converter","vector svg to jpg"],"url":"https://toolsly.tools/svg-to-jpg","manifestUrl":"https://toolsly.tools/svg-to-jpg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".svg"],"mimeTypes":["image/svg+xml"]},"output":{"type":"file","extension":".jpg","mimeType":"image/jpeg"},"options":[{"type":"number","key":"width","label":"Output width (px)","defaultValue":1024,"min":16,"max":8192,"step":1,"help":"Height scales automatically to keep the aspect ratio."},{"type":"number","key":"quality","label":"JPG quality","defaultValue":92,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."},{"type":"select","key":"background","label":"Background color","defaultValue":"#ffffff","choices":[{"value":"#ffffff","label":"White"},{"value":"#000000","label":"Black"},{"value":"#f3f4f6","label":"Light gray"}],"help":"JPG has no transparency, so the SVG is rendered on this color."}],"invocation":{"webUi":"https://toolsly.tools/svg-to-jpg","api":null}},{"kind":"converter","slug":"svg-to-pdf","name":"SVG to PDF","description":"Render an SVG vector image as a single-page PDF — fit-to-page, runs in your browser.","longDescription":"Drop in an SVG and download a single-page PDF with the diagram rasterized and centered on the page. The SVG is rasterized at the width you pick (default 1024px) before being embedded — bumping the width gives a sharper page at the cost of a larger file. Choose A4, US Letter, or US Legal; orientation defaults to whichever matches the SVG aspect. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["svg to pdf","convert svg to pdf","svg to pdf converter","svg to pdf online","svg to pdf free","svg to pdf online free","vector svg to pdf","svg image to pdf","free svg to pdf","online svg to pdf converter","svg pdf converter"],"url":"https://toolsly.tools/svg-to-pdf","manifestUrl":"https://toolsly.tools/svg-to-pdf/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".svg"],"mimeTypes":["image/svg+xml"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"number","key":"rasterWidth","label":"Rasterization width (px)","defaultValue":1024,"min":64,"max":8192,"step":1,"help":"Higher = sharper PDF, larger file."},{"type":"select","key":"pageSize","label":"Page size","defaultValue":"a4","choices":[{"value":"a4","label":"A4"},{"value":"letter","label":"US Letter"},{"value":"legal","label":"US Legal"}]},{"type":"select","key":"orientation","label":"Orientation","defaultValue":"auto","choices":[{"value":"auto","label":"Auto (match diagram)"},{"value":"portrait","label":"Portrait"},{"value":"landscape","label":"Landscape"}]}],"invocation":{"webUi":"https://toolsly.tools/svg-to-pdf","api":null}},{"kind":"converter","slug":"svg-to-png","name":"SVG to PNG","description":"Convert SVG vector images to PNG at any size — runs in your browser.","longDescription":"Drop in an SVG and download a crisp PNG at the size you choose. PNG preserves transparency, so the SVG's background stays transparent unless one is set in the file. Conversion happens locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["svg to png","convert svg to png","svg to png converter","svg to png online","svg to png free","svg to png online free","change svg to png","svg png converter","free svg to png","online svg to png converter","vector svg to png"],"url":"https://toolsly.tools/svg-to-png","manifestUrl":"https://toolsly.tools/svg-to-png/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".svg"],"mimeTypes":["image/svg+xml"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"number","key":"width","label":"Output width (px)","defaultValue":1024,"min":16,"max":8192,"step":1,"help":"Height scales automatically to keep the aspect ratio."}],"invocation":{"webUi":"https://toolsly.tools/svg-to-png","api":null}},{"kind":"converter","slug":"svg-to-webp","name":"SVG to WebP","description":"Convert SVG vector images to WebP at any size — runs in your browser.","longDescription":"Drop in an SVG and download a crisp WebP at the size you choose. WebP preserves transparency and produces files 25–50% smaller than JPG at equivalent quality. SVGs are vector — you set the output width (default 1024px) and the height scales automatically. Conversion happens locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["svg to webp","convert svg to webp","svg to webp converter","svg to webp online","svg to webp free","svg to webp online free","change svg to webp","svg webp converter","free svg to webp","online svg to webp converter","vector svg to webp"],"url":"https://toolsly.tools/svg-to-webp","manifestUrl":"https://toolsly.tools/svg-to-webp/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".svg"],"mimeTypes":["image/svg+xml"]},"output":{"type":"file","extension":".webp","mimeType":"image/webp"},"options":[{"type":"number","key":"width","label":"Output width (px)","defaultValue":1024,"min":16,"max":8192,"step":1,"help":"Height scales automatically to keep the aspect ratio."},{"type":"number","key":"quality","label":"WebP quality","defaultValue":90,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."}],"invocation":{"webUi":"https://toolsly.tools/svg-to-webp","api":null}},{"kind":"utility","slug":"swift-bic-validator","name":"SWIFT / BIC Validator","description":"Validate a SWIFT/BIC code format and break it down into bank, country, location and branch fields.","longDescription":"Paste any SWIFT or Business Identifier Code (BIC) — 8 or 11 characters — and verify it matches the ISO 9362 format. The validator strips whitespace, upper-cases the input, then splits it into the bank code (4 letters), country code (2 letters, ISO 3166-1 alpha-2), location code (2 alphanumeric) and optional branch code (3 alphanumeric, defaulting to the primary office). It also flags 'test' BICs where the second character of the location code is '0' — those identifiers belong to the SWIFT test-and-training network, not production. Useful for backend engineers wiring up cross-border payments, ops teams verifying counterparty details, and developers writing onboarding forms. Runs entirely in your browser — your data is never sent anywhere.","category":"payment","categoryName":"Payment & cards","keywords":["swift code validator","bic check","bic validator","swift bic check","iso 9362 validator","swift code format","bic format check","business identifier code","swift validator online","bic parser","swift bic decoder","bic check digit"],"badge":"Validator","url":"https://toolsly.tools/swift-bic-validator","manifestUrl":"https://toolsly.tools/swift-bic-validator/tool.json","inputs":[{"type":"text","key":"bic","label":"SWIFT / BIC code","placeholder":"DEUTDEFFXXX","monospace":true,"help":"8 or 11 characters. Spaces are stripped and letters are upper-cased automatically."}],"outputs":[{"key":"valid","label":"Valid format"},{"key":"bankCode","label":"Bank code"},{"key":"country","label":"Country"},{"key":"locationCode","label":"Location code"},{"key":"branchCode","label":"Branch code"},{"key":"testMode","label":"Live / Test"}],"invocation":{"webUi":"https://toolsly.tools/swift-bic-validator","api":null}},{"kind":"utility","slug":"tailwind-color-finder","name":"Tailwind Color Finder","description":"Find the closest Tailwind v3 utility class (e.g. bg-emerald-600) for any hex / rgb / hsl color.","longDescription":"Paste any hex / rgb / hsl color and find the closest Tailwind v3 default-palette utility — out of 242 (22 hues × 11 shades from 50 through 950). Returns the closest class name, the corresponding Tailwind hex, and a ranked list of the top 5 nearest candidates so you can pick the best fit. The distance metric is Euclidean in RGB space — fast and accurate enough for matching at this resolution. The full 242-color list is bundled inline; no external dependency on a Tailwind install. Output includes ready-to-paste `bg-*` and `text-*` class names.","category":"color","categoryName":"Color","keywords":["tailwind color finder","tailwind color picker","hex to tailwind class","rgb to tailwind class","closest tailwind color","tailwind palette lookup","tailwind utility finder","tailwind class generator","tailwind hex match","find tailwind color from hex","tailwind cheatsheet color","tailwind v3 colors"],"badge":"Lookup","url":"https://toolsly.tools/tailwind-color-finder","manifestUrl":"https://toolsly.tools/tailwind-color-finder/tool.json","inputs":[{"type":"text","key":"color","label":"Color","placeholder":"#3b82f6","defaultValue":"#3b82f6","monospace":true,"help":"Hex, rgb(), hsl(), or a CSS color name."}],"outputs":[{"key":"preview","label":"Input preview","multiline":true},{"key":"bgClass","label":"Closest bg- class"},{"key":"textClass","label":"Closest text- class"},{"key":"borderClass","label":"Closest border- class"},{"key":"hexMatch","label":"Tailwind hex"},{"key":"delta","label":"Distance"},{"key":"candidates","label":"Top 5 candidates","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/tailwind-color-finder","api":null}},{"kind":"utility","slug":"tailwind-palette-extractor","name":"Tailwind Palette Extractor","description":"Generate a full 11-shade Tailwind-style palette (50–950) from any single hex color.","longDescription":"Generate a complete 11-shade Tailwind-style palette — 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950 — from any single hex / rgb / hsl color. The tool interpolates HSL lightness across the canonical Tailwind curve and applies modest saturation scaling at the extremes to match the official Tailwind v3 palette feel. Perfect for extending Tailwind with a brand color, building design tokens, or theming. Output includes a `tailwind.config.js` snippet you can paste straight into your `theme.extend.colors` map. Runs locally — no upload, no signup.","category":"color","categoryName":"Color","keywords":["tailwind palette generator","tailwind palette from hex","tailwind palette extractor","tailwind 50 to 950 generator","tailwind brand palette","tailwind shades generator","tailwind color scale generator","tailwind theme generator","tailwind config palette","tailwind extend colors","tailwind palette free","tailwind v3 palette generator"],"badge":"Palette","url":"https://toolsly.tools/tailwind-palette-extractor","manifestUrl":"https://toolsly.tools/tailwind-palette-extractor/tool.json","inputs":[{"type":"text","key":"color","label":"Base color","placeholder":"#3b82f6","defaultValue":"#3b82f6","monospace":true,"help":"Hex, rgb(), hsl(), or a CSS color name. Used as anchor for the 500 shade."},{"type":"text","key":"name","label":"Palette name","defaultValue":"brand","placeholder":"brand","help":"Used in the tailwind.config.js snippet."}],"outputs":[{"key":"palette","label":"Tailwind-style palette (50–950)","multiline":true},{"key":"hexList","label":"Hex list","multiline":true},{"key":"tailwindConfig","label":"tailwind.config.js snippet","multiline":true},{"key":"cssVars","label":"CSS variables","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/tailwind-palette-extractor","api":null}},{"kind":"utility","slug":"temperature-converter","name":"Temperature Converter","description":"Convert between Celsius, Fahrenheit, Kelvin and Rankine using the exact formulas, not approximations.","longDescription":"Temperature isn't a simple linear scale — Celsius and Fahrenheit have different zero points, and absolute scales (Kelvin, Rankine) start at absolute zero. This tool applies the exact conversion formulas: °F = °C × 9/5 + 32, K = °C + 273.15, °R = K × 9/5. We warn if you go below absolute zero, since that's physically impossible. The table at the bottom shows your value on all four scales at once. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["celsius to fahrenheit","fahrenheit to celsius","c to f","f to c","kelvin converter","celsius to kelvin","rankine converter","temperature converter","temp converter","convert temperature","degrees converter","absolute zero","k to c","f to k"],"badge":"Converter","url":"https://toolsly.tools/temperature-converter","manifestUrl":"https://toolsly.tools/temperature-converter/tool.json","inputs":[{"type":"number","key":"value","label":"Value","defaultValue":100,"step":0.01},{"type":"select","key":"from","label":"From","defaultValue":"C","choices":[{"value":"C","label":"°C (Celsius)"},{"value":"F","label":"°F (Fahrenheit)"},{"value":"K","label":"K (Kelvin)"},{"value":"R","label":"°R (Rankine)"}]},{"type":"select","key":"to","label":"To","defaultValue":"F","choices":[{"value":"C","label":"°C (Celsius)"},{"value":"F","label":"°F (Fahrenheit)"},{"value":"K","label":"K (Kelvin)"},{"value":"R","label":"°R (Rankine)"}]}],"outputs":[{"key":"converted","label":"Converted value"},{"key":"kelvin","label":"In Kelvin"},{"key":"table","label":"All scales","multiline":true},{"key":"notes","label":"Notes","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/temperature-converter","api":null}},{"kind":"utility","slug":"text-case-converter","name":"Text Case Converter","description":"Convert any string to lowercase, UPPERCASE, Title Case, camelCase, snake_case, kebab-case and more — all at once.","longDescription":"Paste a string and instantly see it rendered in every common casing style — lowercase, UPPERCASE, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case and CONSTANT_CASE. Copy whichever variant you need. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["text case converter","case converter online","case converter free","uppercase converter","lowercase converter","title case converter","camelcase converter","pascalcase converter","snake case converter","kebab case converter","constant case converter","string case tool","change text case","letter case converter"],"badge":"Formatter","url":"https://toolsly.tools/text-case-converter","manifestUrl":"https://toolsly.tools/text-case-converter/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"the quick brown fox","multiline":true,"monospace":true}],"outputs":[{"key":"lower","label":"lowercase"},{"key":"upper","label":"UPPERCASE"},{"key":"title","label":"Title Case"},{"key":"sentence","label":"Sentence case"},{"key":"camel","label":"camelCase"},{"key":"pascal","label":"PascalCase"},{"key":"snake","label":"snake_case"},{"key":"kebab","label":"kebab-case"},{"key":"constant","label":"CONSTANT_CASE"}],"invocation":{"webUi":"https://toolsly.tools/text-case-converter","api":null}},{"kind":"utility","slug":"text-counter","name":"Text Counter","description":"Count characters, words, lines, sentences, paragraphs and estimate reading time.","longDescription":"Paste any text and instantly see character counts (with and without spaces), word count, line count, sentence count (split on . ! ?), paragraph count (separated by blank lines), and an estimated reading time at 250 words per minute. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["text counter","word counter","character counter","letter counter","line counter","sentence counter","paragraph counter","reading time estimator","text statistics","word count tool","char count online","writing word counter","essay word counter"],"badge":"Counter","url":"https://toolsly.tools/text-counter","manifestUrl":"https://toolsly.tools/text-counter/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Paste your text here…","multiline":true,"monospace":false}],"outputs":[{"key":"characters","label":"Characters (with spaces)"},{"key":"charactersNoSpace","label":"Characters (no spaces)"},{"key":"words","label":"Words"},{"key":"lines","label":"Lines"},{"key":"sentences","label":"Sentences"},{"key":"paragraphs","label":"Paragraphs"},{"key":"readingTimeMinutes","label":"Reading time (min)"}],"invocation":{"webUi":"https://toolsly.tools/text-counter","api":null}},{"kind":"utility","slug":"text-dedupe-lines","name":"Deduplicate Lines","description":"Remove duplicate lines from a list — case-sensitive or not, preserve original order or not.","longDescription":"Strip out repeated lines from any text block. Choose whether comparison is case-sensitive, whether whitespace at the ends of each line is trimmed before comparing, and whether the first occurrence of each value stays in its original position. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["dedupe lines","deduplicate lines","remove duplicate lines","unique lines","dedupe text","remove duplicates","line deduplicator","dedupe online","dedupe free","uniq lines","filter duplicate lines","text deduper","line uniq tool"],"badge":"Transformer","url":"https://toolsly.tools/text-dedupe-lines","manifestUrl":"https://toolsly.tools/text-dedupe-lines/tool.json","inputs":[{"type":"text","key":"text","label":"Text (one item per line)","placeholder":"apple\nbanana\napple\ncherry","multiline":true,"monospace":true},{"type":"boolean","key":"caseSensitive","label":"Case-sensitive","defaultValue":true},{"type":"boolean","key":"preserveOrder","label":"Preserve order (first wins)","defaultValue":true},{"type":"boolean","key":"trim","label":"Trim whitespace before comparing","defaultValue":false}],"outputs":[{"key":"result","label":"Unique lines","multiline":true},{"key":"removed","label":"Duplicates removed"},{"key":"kept","label":"Lines kept"}],"invocation":{"webUi":"https://toolsly.tools/text-dedupe-lines","api":null}},{"kind":"utility","slug":"text-diff","name":"Text Diff","description":"Compare two texts side by side and highlight added, removed and unchanged lines, words or characters.","longDescription":"Paste two versions of any text — an old draft and a new one, a quote and a contract, two log files, two emails — and instantly see what changed. Choose line, word or character granularity. Added chunks are prefixed with `+`, removed chunks with `-` and unchanged with two spaces. Counts of added, removed and unchanged chunks appear below. The comparison runs entirely in your browser — nothing is uploaded.","category":"text","categoryName":"Text & Encoding","keywords":["text diff","text diff online","text diff free","compare two texts","text comparison tool","diff text online","online text compare","find differences between texts","text difference checker","compare text online","side by side text diff","free text diff tool","text comparison online"],"badge":"Comparer","url":"https://toolsly.tools/text-diff","manifestUrl":"https://toolsly.tools/text-diff/tool.json","inputs":[{"type":"text","key":"a","label":"Text A (original)","placeholder":"Original text…","multiline":true,"monospace":true},{"type":"text","key":"b","label":"Text B (modified)","placeholder":"Modified text…","multiline":true,"monospace":true},{"type":"select","key":"mode","label":"Diff mode","defaultValue":"Line diff","choices":[{"value":"Character diff","label":"Character diff"},{"value":"Word diff","label":"Word diff"},{"value":"Line diff","label":"Line diff"}]}],"outputs":[{"key":"diff","label":"Diff","multiline":true},{"key":"added","label":"Added chunks"},{"key":"removed","label":"Removed chunks"},{"key":"unchanged","label":"Unchanged chunks"}],"invocation":{"webUi":"https://toolsly.tools/text-diff","api":null}},{"kind":"utility","slug":"text-reverse","name":"Text Reverse","description":"Reverse text by character or by word — Unicode-aware so emoji and combining marks stay intact.","longDescription":"Flip a string end-to-end character by character, or reverse the order of words while keeping each word intact. Uses Array.from for splitting so multi-byte Unicode codepoints (emoji, CJK characters) are not torn apart. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["text reverse","reverse text","reverse string","string reverser","text reverser","reverse words","reverse text online","reverse text free","flip text","backwards text","mirror text","unicode reverse","text flipper"],"badge":"Transformer","url":"https://toolsly.tools/text-reverse","manifestUrl":"https://toolsly.tools/text-reverse/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Hello, world!","multiline":true,"monospace":true},{"type":"select","key":"mode","label":"Mode","defaultValue":"characters","choices":[{"value":"characters","label":"Characters"},{"value":"words","label":"Words"}]}],"outputs":[{"key":"result","label":"Reversed","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/text-reverse","api":null}},{"kind":"utility","slug":"text-sort-lines","name":"Sort Lines","description":"Sort lines alphabetically or numerically, ascending or descending, case-sensitive or not.","longDescription":"Split text on newlines and sort the lines. Pick ascending or descending order, toggle case sensitivity, and enable natural numeric sorting so \"item2\" comes before \"item10\". Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["sort lines","line sorter","sort text lines","alphabetize lines","sort lines online","sort lines free","natural sort lines","numeric line sort","ascending sort","descending sort","case sensitive sort","line sort tool","text line sorter"],"badge":"Transformer","url":"https://toolsly.tools/text-sort-lines","manifestUrl":"https://toolsly.tools/text-sort-lines/tool.json","inputs":[{"type":"text","key":"text","label":"Text (one item per line)","placeholder":"banana\napple\ncherry","multiline":true,"monospace":true},{"type":"select","key":"direction","label":"Direction","defaultValue":"asc","choices":[{"value":"asc","label":"Ascending (A → Z)"},{"value":"desc","label":"Descending (Z → A)"}]},{"type":"boolean","key":"caseSensitive","label":"Case-sensitive","defaultValue":false},{"type":"boolean","key":"numeric","label":"Natural numeric sort","defaultValue":false,"help":"Treats embedded numbers naturally (item2 < item10)."}],"outputs":[{"key":"sorted","label":"Sorted","multiline":true},{"key":"count","label":"Lines"}],"invocation":{"webUi":"https://toolsly.tools/text-sort-lines","api":null}},{"kind":"utility","slug":"text-to-binary","name":"Text to Binary","description":"Encode UTF-8 text as 8-bit binary groups — choose space, comma or no separator.","longDescription":"Convert any UTF-8 string to its binary representation, one byte per 8-bit group. Optional separators make the output easier to read or paste into other tools. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["text to binary","string to binary","ascii to binary","utf8 to binary","binary encoder","binary encode","text to binary online","text to binary free","binary translator","convert text to binary","binary converter","8 bit binary encoder","text to 01"],"badge":"Encoder","url":"https://toolsly.tools/text-to-binary","manifestUrl":"https://toolsly.tools/text-to-binary/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Hello","multiline":true,"monospace":true},{"type":"select","key":"separator","label":"Separator","defaultValue":"space","choices":[{"value":"space","label":"Space"},{"value":"none","label":"None"},{"value":"comma","label":"Comma"}]}],"outputs":[{"key":"binary","label":"Binary","multiline":true},{"key":"byteLength","label":"Byte length"}],"invocation":{"webUi":"https://toolsly.tools/text-to-binary","api":null}},{"kind":"utility","slug":"text-to-decimal","name":"Text to Decimal","description":"Encode each character as its Unicode code point in decimal — space-, comma- or newline-separated output.","longDescription":"Type or paste any text and get the decimal Unicode code point for every character. Surrogate pairs (e.g. emoji) are handled correctly: one code point per visible character. Pick how the codes should be separated — spaces, commas, or one per line — to suit your downstream parser. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["text to decimal","string to decimal","char to decimal","ascii to decimal","unicode to decimal","text to charcode","text to code points","char code converter","string to numbers","text to int","text to decimal online","decimal code points","char to int"],"badge":"Encoder","url":"https://toolsly.tools/text-to-decimal","manifestUrl":"https://toolsly.tools/text-to-decimal/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Hello","multiline":true,"monospace":true},{"type":"select","key":"format","label":"Separator","defaultValue":"space","choices":[{"value":"space","label":"Space-separated"},{"value":"comma","label":"Comma-separated"},{"value":"newline","label":"Newline-separated"}]}],"outputs":[{"key":"codes","label":"Decimal code points","multiline":true},{"key":"count","label":"Character count"}],"invocation":{"webUi":"https://toolsly.tools/text-to-decimal","api":null}},{"kind":"utility","slug":"text-to-hex","name":"Text to Hex","description":"Encode UTF-8 text as a hex string — lowercase, uppercase, space-separated or 0x-prefixed.","longDescription":"Convert any UTF-8 string into its hex byte representation. Pick lowercase or uppercase output, optionally insert spaces between bytes, or prefix each byte with 0x for embedding in C/Java source. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["text to hex","string to hex","ascii to hex","utf8 to hex","hex encoder","hex encode","encode hex","text to hex online","text to hex free","hex converter","hex bytes encoder","hexadecimal encoder","convert text to hex"],"badge":"Encoder","url":"https://toolsly.tools/text-to-hex","manifestUrl":"https://toolsly.tools/text-to-hex/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Hello, world!","multiline":true,"monospace":true},{"type":"select","key":"format","label":"Format","defaultValue":"lower","choices":[{"value":"lower","label":"Lowercase (48656c6c6f)"},{"value":"upper","label":"Uppercase (48656C6C6F)"},{"value":"spaced","label":"Space-separated (48 65 6c 6c 6f)"},{"value":"prefixed","label":"0x-prefixed (0x48 0x65 0x6c)"}]}],"outputs":[{"key":"hex","label":"Hex","multiline":true},{"key":"byteLength","label":"Byte length"}],"invocation":{"webUi":"https://toolsly.tools/text-to-hex","api":null}},{"kind":"utility","slug":"text-to-morse","name":"Text to Morse Code","description":"Encode text into international Morse code (ITU-R M.1677-1) — letters, digits and common punctuation supported.","longDescription":"Convert any text into international Morse code following the ITU-R M.1677-1 standard. Letters within a word are separated by a single space, words are separated by a forward slash (the conventional gap). Supports A-Z, 0-9, and the standard punctuation set: . , ? ' ! / ( ) & : ; = + - _ \" $ @. Unsupported characters become '#' so the output stays aligned with the input. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["text to morse","morse encoder","text to morse code","convert text to morse","morse code translator","morse code generator","letter to morse","alphabet to morse","morse encoder online","morse code converter","encode morse code","english to morse","itu morse code"],"badge":"Encoder","url":"https://toolsly.tools/text-to-morse","manifestUrl":"https://toolsly.tools/text-to-morse/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"SOS, hello world!","multiline":true}],"outputs":[{"key":"morse","label":"Morse code","multiline":true},{"key":"letterCount","label":"Letters encoded"}],"invocation":{"webUi":"https://toolsly.tools/text-to-morse","api":null}},{"kind":"utility","slug":"text-to-unicode","name":"Text to Unicode Escapes","description":"Convert text into Unicode escape sequences — U+XXXX, \\uXXXX, &#XXXX; or %uXXXX. Hex digits are uppercase.","longDescription":"Encode every character of a string into a chosen Unicode-escape notation. Four formats are supported: U+XXXX (Unicode standard UCS notation), \\uXXXX (JavaScript / Java / JSON escape), &#XXXX; (HTML numeric entity, decimal-style but you get hex here too — see html-encode for the decimal form), and %uXXXX (older JavaScript escape() style). Each code is rendered as four uppercase hex digits. Supplementary characters (above U+FFFF) are emitted as a surrogate pair so the \\uXXXX form is round-trippable. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["text to unicode","string to unicode escape","unicode escape encoder","text to \\u","text to u+","javascript unicode escape","html entity encoder hex","text to %u","text to unicode online","convert text to unicode","unicode escape converter","text to ucs","string to javascript escape"],"badge":"Encoder","url":"https://toolsly.tools/text-to-unicode","manifestUrl":"https://toolsly.tools/text-to-unicode/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Hello","multiline":true,"monospace":true},{"type":"select","key":"format","label":"Format","defaultValue":"ucs","choices":[{"value":"ucs","label":"U+XXXX (UCS notation)"},{"value":"js","label":"\\uXXXX (JS / Java / JSON escape)"},{"value":"html","label":"&#XXXX; (HTML entity)"},{"value":"pct","label":"%uXXXX (legacy JS escape)"}]},{"type":"select","key":"scope","label":"Encode which characters","defaultValue":"non-ascii","choices":[{"value":"all","label":"All characters"},{"value":"non-ascii","label":"Non-ASCII only (keep printable ASCII)"}]}],"outputs":[{"key":"result","label":"Escaped text","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/text-to-unicode","api":null}},{"kind":"converter","slug":"tiff-to-jpg","name":"TIFF to JPG","description":"Convert TIFF (TIF) images to JPG (JPEG) — much smaller files, runs in your browser.","longDescription":"Drop in a TIFF or TIF file and download a JPG. JPG produces dramatically smaller files than TIFF and is supported by every device and app. Transparency (uncommon in TIFF) is flattened against the background color you pick. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["tiff to jpg","tif to jpg","tiff to jpeg","convert tiff to jpg","tiff to jpg converter","tiff to jpg online","tiff to jpg free","tiff to jpg online free","change tiff to jpg","free tiff to jpg","online tiff to jpg converter"],"url":"https://toolsly.tools/tiff-to-jpg","manifestUrl":"https://toolsly.tools/tiff-to-jpg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".tif",".tiff"],"mimeTypes":["image/tiff","image/tif"]},"output":{"type":"file","extension":".jpg","mimeType":"image/jpeg"},"options":[{"type":"number","key":"quality","label":"JPG quality","defaultValue":92,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."},{"type":"select","key":"background","label":"Background (for transparent areas)","defaultValue":"#ffffff","choices":[{"value":"#ffffff","label":"White"},{"value":"#000000","label":"Black"},{"value":"#f3f4f6","label":"Light gray"}],"help":"JPG has no transparency, so transparent pixels get filled with this color."}],"invocation":{"webUi":"https://toolsly.tools/tiff-to-jpg","api":null}},{"kind":"converter","slug":"tiff-to-png","name":"TIFF to PNG","description":"Convert TIFF (TIF) images to PNG — preserves quality, runs in your browser.","longDescription":"Drop in a TIFF or TIF file and download a PNG. TIFF is common in print, scanning, and photography but isn't supported by most browsers and apps; PNG works everywhere and stays lossless. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["tiff to png","tif to png","convert tiff to png","tiff to png converter","tiff to png online","tiff to png free","tiff to png online free","change tiff to png","tif png converter","free tiff to png","online tiff to png converter"],"url":"https://toolsly.tools/tiff-to-png","manifestUrl":"https://toolsly.tools/tiff-to-png/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".tif",".tiff"],"mimeTypes":["image/tiff","image/tif"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/tiff-to-png","api":null}},{"kind":"converter","slug":"tiff-to-webp","name":"TIFF to WebP","description":"Convert TIFF (TIF) images to WebP — much smaller files, runs in your browser.","longDescription":"Drop in a TIFF or TIF file and download a WebP. WebP files are dramatically smaller than TIFF while preserving transparency and supporting both lossy and lossless modes. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["tiff to webp","tif to webp","convert tiff to webp","tiff to webp converter","tiff to webp online","tiff to webp free","tiff to webp online free","change tiff to webp","tiff webp converter","free tiff to webp","online tiff to webp converter"],"url":"https://toolsly.tools/tiff-to-webp","manifestUrl":"https://toolsly.tools/tiff-to-webp/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".tif",".tiff"],"mimeTypes":["image/tiff","image/tif"]},"output":{"type":"file","extension":".webp","mimeType":"image/webp"},"options":[{"type":"number","key":"quality","label":"WebP quality","defaultValue":90,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."}],"invocation":{"webUi":"https://toolsly.tools/tiff-to-webp","api":null}},{"kind":"utility","slug":"timezone-converter","name":"Timezone Converter","description":"Convert a time from any timezone to any other — Central to Pacific, UTC to Tokyo, you name it.","longDescription":"Pick the source and target timezones and enter a time (\"now\", \"14:30\", \"2026-05-20\", or \"2026-05-20 14:30\"). We hand it to Intl.DateTimeFormat, so DST transitions and historical offsets are correct. The result shows both timezones side-by-side with their UTC offsets and the day-difference if one falls on the next/previous calendar day. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["timezone converter","time zone converter","convert timezone","central to pacific","pst to est","est to ist","utc to local","world clock converter","time zone calculator","convert time across timezones","what time is it in","timezone offset calculator"],"badge":"Converter","url":"https://toolsly.tools/timezone-converter","manifestUrl":"https://toolsly.tools/timezone-converter/tool.json","inputs":[{"type":"select","key":"from","label":"From","defaultValue":"America/Chicago","choices":[{"value":"UTC","label":"UTC"},{"value":"America/New_York","label":"America/New_York (Eastern)"},{"value":"America/Chicago","label":"America/Chicago (Central)"},{"value":"America/Denver","label":"America/Denver (Mountain)"},{"value":"America/Los_Angeles","label":"America/Los_Angeles (Pacific)"},{"value":"America/Anchorage","label":"America/Anchorage (Alaska)"},{"value":"Pacific/Honolulu","label":"Pacific/Honolulu (Hawaii)"},{"value":"America/Toronto","label":"America/Toronto"},{"value":"America/Vancouver","label":"America/Vancouver"},{"value":"America/Mexico_City","label":"America/Mexico_City"},{"value":"America/Sao_Paulo","label":"America/Sao_Paulo"},{"value":"America/Argentina/Buenos_Aires","label":"America/Buenos_Aires"},{"value":"Europe/London","label":"Europe/London (UK)"},{"value":"Europe/Dublin","label":"Europe/Dublin"},{"value":"Europe/Paris","label":"Europe/Paris"},{"value":"Europe/Berlin","label":"Europe/Berlin"},{"value":"Europe/Madrid","label":"Europe/Madrid"},{"value":"Europe/Rome","label":"Europe/Rome"},{"value":"Europe/Amsterdam","label":"Europe/Amsterdam"},{"value":"Europe/Brussels","label":"Europe/Brussels"},{"value":"Europe/Stockholm","label":"Europe/Stockholm"},{"value":"Europe/Zurich","label":"Europe/Zurich"},{"value":"Europe/Athens","label":"Europe/Athens"},{"value":"Europe/Istanbul","label":"Europe/Istanbul"},{"value":"Europe/Moscow","label":"Europe/Moscow"},{"value":"Africa/Cairo","label":"Africa/Cairo"},{"value":"Africa/Casablanca","label":"Africa/Casablanca"},{"value":"Africa/Johannesburg","label":"Africa/Johannesburg"},{"value":"Africa/Nairobi","label":"Africa/Nairobi"},{"value":"Asia/Dubai","label":"Asia/Dubai (Gulf)"},{"value":"Asia/Riyadh","label":"Asia/Riyadh"},{"value":"Asia/Tehran","label":"Asia/Tehran"},{"value":"Asia/Karachi","label":"Asia/Karachi"},{"value":"Asia/Kolkata","label":"Asia/Kolkata (India)"},{"value":"Asia/Bangkok","label":"Asia/Bangkok"},{"value":"Asia/Singapore","label":"Asia/Singapore"},{"value":"Asia/Hong_Kong","label":"Asia/Hong_Kong"},{"value":"Asia/Shanghai","label":"Asia/Shanghai"},{"value":"Asia/Tokyo","label":"Asia/Tokyo (JST)"},{"value":"Asia/Seoul","label":"Asia/Seoul"},{"value":"Australia/Perth","label":"Australia/Perth"},{"value":"Australia/Sydney","label":"Australia/Sydney"},{"value":"Pacific/Auckland","label":"Pacific/Auckland"}]},{"type":"select","key":"to","label":"To","defaultValue":"America/Los_Angeles","choices":[{"value":"UTC","label":"UTC"},{"value":"America/New_York","label":"America/New_York (Eastern)"},{"value":"America/Chicago","label":"America/Chicago (Central)"},{"value":"America/Denver","label":"America/Denver (Mountain)"},{"value":"America/Los_Angeles","label":"America/Los_Angeles (Pacific)"},{"value":"America/Anchorage","label":"America/Anchorage (Alaska)"},{"value":"Pacific/Honolulu","label":"Pacific/Honolulu (Hawaii)"},{"value":"America/Toronto","label":"America/Toronto"},{"value":"America/Vancouver","label":"America/Vancouver"},{"value":"America/Mexico_City","label":"America/Mexico_City"},{"value":"America/Sao_Paulo","label":"America/Sao_Paulo"},{"value":"America/Argentina/Buenos_Aires","label":"America/Buenos_Aires"},{"value":"Europe/London","label":"Europe/London (UK)"},{"value":"Europe/Dublin","label":"Europe/Dublin"},{"value":"Europe/Paris","label":"Europe/Paris"},{"value":"Europe/Berlin","label":"Europe/Berlin"},{"value":"Europe/Madrid","label":"Europe/Madrid"},{"value":"Europe/Rome","label":"Europe/Rome"},{"value":"Europe/Amsterdam","label":"Europe/Amsterdam"},{"value":"Europe/Brussels","label":"Europe/Brussels"},{"value":"Europe/Stockholm","label":"Europe/Stockholm"},{"value":"Europe/Zurich","label":"Europe/Zurich"},{"value":"Europe/Athens","label":"Europe/Athens"},{"value":"Europe/Istanbul","label":"Europe/Istanbul"},{"value":"Europe/Moscow","label":"Europe/Moscow"},{"value":"Africa/Cairo","label":"Africa/Cairo"},{"value":"Africa/Casablanca","label":"Africa/Casablanca"},{"value":"Africa/Johannesburg","label":"Africa/Johannesburg"},{"value":"Africa/Nairobi","label":"Africa/Nairobi"},{"value":"Asia/Dubai","label":"Asia/Dubai (Gulf)"},{"value":"Asia/Riyadh","label":"Asia/Riyadh"},{"value":"Asia/Tehran","label":"Asia/Tehran"},{"value":"Asia/Karachi","label":"Asia/Karachi"},{"value":"Asia/Kolkata","label":"Asia/Kolkata (India)"},{"value":"Asia/Bangkok","label":"Asia/Bangkok"},{"value":"Asia/Singapore","label":"Asia/Singapore"},{"value":"Asia/Hong_Kong","label":"Asia/Hong_Kong"},{"value":"Asia/Shanghai","label":"Asia/Shanghai"},{"value":"Asia/Tokyo","label":"Asia/Tokyo (JST)"},{"value":"Asia/Seoul","label":"Asia/Seoul"},{"value":"Australia/Perth","label":"Australia/Perth"},{"value":"Australia/Sydney","label":"Australia/Sydney"},{"value":"Pacific/Auckland","label":"Pacific/Auckland"}]},{"type":"text","key":"time","label":"Time","defaultValue":"now","placeholder":"now / 14:30 / 2026-05-20 14:30","help":"Type 'now' for the current instant."}],"outputs":[{"key":"fromTime","label":"From"},{"key":"toTime","label":"To"},{"key":"fromOffset","label":"From offset"},{"key":"toOffset","label":"To offset"},{"key":"delta","label":"Time difference"},{"key":"dayShift","label":"Day shift"}],"invocation":{"webUi":"https://toolsly.tools/timezone-converter","api":null}},{"kind":"utility","slug":"tip-calculator","name":"Tip Calculator","description":"Calculate tip and split a restaurant bill across any number of people.","longDescription":"Enter the bill amount, tip percentage, and number of people. Returns the tip, the total bill, and what each person owes (rounded up by default so nobody under-pays). Runs locally in your browser.","category":"calc","categoryName":"Calculators","keywords":["tip calculator","tip calculator online","tip calculator free","restaurant tip calculator","bill split calculator","split bill calculator","how much to tip","tip percentage calculator","gratuity calculator","split the bill","dinner tip calculator","tip amount calculator"],"badge":"Calculator","url":"https://toolsly.tools/tip-calculator","manifestUrl":"https://toolsly.tools/tip-calculator/tool.json","inputs":[{"type":"number","key":"bill","label":"Bill amount","defaultValue":50,"min":0},{"type":"number","key":"tipPct","label":"Tip %","defaultValue":18,"min":0,"max":100},{"type":"number","key":"people","label":"Number of people","defaultValue":2,"min":1},{"type":"boolean","key":"roundUp","label":"Round each share up to nearest dollar/euro/etc.","defaultValue":false}],"outputs":[{"key":"tip","label":"Tip amount"},{"key":"total","label":"Total bill (with tip)"},{"key":"perPerson","label":"Each person pays"},{"key":"totalPaid","label":"Total when rounded"}],"invocation":{"webUi":"https://toolsly.tools/tip-calculator","api":null}},{"kind":"utility","slug":"track1-decoder","name":"Track 1 Decoder","description":"Decode an ISO 7813 Track 1 magstripe string into PAN, cardholder name, expiry and service code.","longDescription":"Parses the Format B Track 1 stripe (the line starting with %B) into its constituent fields. Useful when working with capture data from magstripe readers or for sanity-checking test track data. Runs entirely in your browser.","category":"payment","categoryName":"Payment & cards","keywords":["track 1 decoder","track 1 parser","iso 7813 track 1","magstripe decoder","magstripe track 1","format b track decoder","track 1 reader online","track 1 decoder free","decode magnetic stripe","track data parser","credit card track 1","mag stripe track parser"],"badge":"Decoder","url":"https://toolsly.tools/track1-decoder","manifestUrl":"https://toolsly.tools/track1-decoder/tool.json","inputs":[{"type":"text","key":"track1","label":"Track 1 data","placeholder":"%B4111111111111111^DOE/JOHN          ^25121010000000000000?","monospace":true,"help":"Must start with %B and end with ?. The string stays in your browser."}],"outputs":[{"key":"pan","label":"PAN"},{"key":"cardholderName","label":"Cardholder name"},{"key":"expiryYear","label":"Expiry year (YY)"},{"key":"expiryMonth","label":"Expiry month (MM)"},{"key":"serviceCode","label":"Service code"},{"key":"discretionary","label":"Discretionary data"}],"invocation":{"webUi":"https://toolsly.tools/track1-decoder","api":null}},{"kind":"utility","slug":"track2-decoder","name":"Track 2 Decoder","description":"Decode an ISO 7813 Track 2 magstripe string into PAN, expiry, service code and discretionary data.","longDescription":"Parses Track 2 (the line containing '=' between PAN and expiry) into its individual fields. Track 2 is the field carried in EMV tag 57 — useful for decoding ICC capture data as well as physical magstripe reads. Runs entirely in your browser.","category":"payment","categoryName":"Payment & cards","keywords":["track 2 decoder","track 2 parser","iso 7813 track 2","magstripe track 2","track 2 reader online","track 2 decoder free","track 2 equivalent data","tag 57 decoder","decode track 2","credit card track 2","mag stripe track 2 parser","card track data decoder"],"badge":"Decoder","url":"https://toolsly.tools/track2-decoder","manifestUrl":"https://toolsly.tools/track2-decoder/tool.json","inputs":[{"type":"text","key":"track2","label":"Track 2 data","placeholder":"4111111111111111=25121010000000000000","monospace":true,"help":"Format: <PAN>=<YYMM><service code><discretionary>. Leading ';' and trailing '?' are optional."}],"outputs":[{"key":"pan","label":"PAN"},{"key":"expiryYear","label":"Expiry year (YY)"},{"key":"expiryMonth","label":"Expiry month (MM)"},{"key":"serviceCode","label":"Service code"},{"key":"discretionary","label":"Discretionary data"}],"invocation":{"webUi":"https://toolsly.tools/track2-decoder","api":null}},{"kind":"utility","slug":"triadic-colors","name":"Triadic Colors Generator","description":"Generate a balanced 3-color triadic palette from any base color — runs locally, free.","longDescription":"A triadic palette uses three colors evenly spaced around the HSL color wheel — 120° apart. This produces a vibrant, balanced scheme that feels rich without the harshness of a true complement. Paste any color and this tool returns the two additional triadic partners (at +120° and +240° hue rotation) along with their hex / RGB / HSL forms and a mono-rendered swatch preview. All math runs in your browser; nothing is uploaded.","category":"color","categoryName":"Color","keywords":["triadic colors","triadic color generator","triadic palette","3 color palette","color wheel triad","120 degree hue","balanced palette generator","triadic harmony","color theory triadic","triadic scheme online","triadic colors free","hsl rotation palette"],"badge":"Palette","url":"https://toolsly.tools/triadic-colors","manifestUrl":"https://toolsly.tools/triadic-colors/tool.json","inputs":[{"type":"text","key":"color","label":"Base color","placeholder":"#3b82f6","defaultValue":"#3b82f6","monospace":true,"help":"Hex, rgb(), hsl(), or a CSS color name."}],"outputs":[{"key":"preview1","label":"Color 1 (base)","multiline":true},{"key":"preview2","label":"Color 2 (+120°)","multiline":true},{"key":"preview3","label":"Color 3 (+240°)","multiline":true},{"key":"color1","label":"Color 1"},{"key":"color2","label":"Color 2"},{"key":"color3","label":"Color 3"},{"key":"list","label":"All three (hex)","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/triadic-colors","api":null}},{"kind":"converter","slug":"tsv-to-csv","name":"TSV to CSV","description":"Convert a tab-separated file to standard CSV — free online, no upload.","longDescription":"Drop in a .tsv (or tab-delimited .txt) file and download a standard comma-separated `.csv`. Cells that contain commas, quotes or newlines are automatically quoted with double quotes per RFC 4180, so the result imports cleanly into Excel, Google Sheets and any CSV library. Conversion runs entirely in your browser.","category":"document","categoryName":"Document","keywords":["tsv to csv","tab separated to csv","convert tsv to csv","tsv to csv converter","tsv to csv online","tsv to csv free","tab delimited to csv","tab to comma converter","tsv csv converter","online tsv to csv","tsv to csv online free","txt to csv tab"],"url":"https://toolsly.tools/tsv-to-csv","manifestUrl":"https://toolsly.tools/tsv-to-csv/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".tsv",".txt"],"mimeTypes":["text/tab-separated-values","text/plain",""]},"output":{"type":"file","extension":".csv","mimeType":"text/csv"},"options":[],"invocation":{"webUi":"https://toolsly.tools/tsv-to-csv","api":null}},{"kind":"converter","slug":"txt-to-html","name":"TXT to HTML","description":"Wrap a plain-text file in a styled, standalone HTML document — free online, no upload.","longDescription":"Drop in a .txt file (or paste the text) and download a complete .html document. Newlines and spacing are preserved inside a `<pre>` block, and bare URLs (`https://...` and `www....`) are turned into clickable links. The output is a single self-contained file with inline styles — open it in any browser. Conversion runs entirely in your browser.","category":"document","categoryName":"Document","keywords":["txt to html","text to html","convert txt to html","txt to html converter","plain text to html","txt to html online free","free txt to html","text file to html","save txt as html","online txt to html","notepad to html","text to webpage"],"url":"https://toolsly.tools/txt-to-html","manifestUrl":"https://toolsly.tools/txt-to-html/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".txt"],"mimeTypes":["text/plain",""]},"output":{"type":"file","extension":".html","mimeType":"text/html"},"options":[],"invocation":{"webUi":"https://toolsly.tools/txt-to-html","api":null}},{"kind":"converter","slug":"txt-to-md","name":"Text to Markdown","description":"Wrap a plain-text (.txt) file in a Markdown document — free online, no upload.","longDescription":"Drop in a .txt file and download a Markdown document. By default the original text is preserved verbatim, with the filename used as a top-level heading. Toggle 'Wrap in code block' to enclose the entire body in a fenced code block instead — useful for log files, configs and code dumps where preserving every character matters. Runs entirely in your browser; your file never leaves your device.","category":"document","categoryName":"Document","keywords":["txt to md","text to markdown","txt to markdown","convert txt to md","convert text to markdown","txt to md converter","text to markdown online","txt to md free","online text to markdown converter","change txt to md","free txt to markdown","wrap text in markdown"],"url":"https://toolsly.tools/txt-to-md","manifestUrl":"https://toolsly.tools/txt-to-md/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".txt"],"mimeTypes":["text/plain",""]},"output":{"type":"file","extension":".md","mimeType":"text/markdown"},"options":[{"type":"boolean","key":"wrapInCodeBlock","label":"Wrap in code block","defaultValue":false,"help":"Enclose the whole body in a ```text fenced code block. Useful for logs and configs."}],"invocation":{"webUi":"https://toolsly.tools/txt-to-md","api":null}},{"kind":"converter","slug":"txt-to-pdf","name":"TXT to PDF","description":"Convert plain-text (.txt) files to a clean, paginated PDF — free online, no upload.","longDescription":"Drop in a .txt file (or paste the text) and download a PDF. The text is rendered in a monospace block that preserves spacing, indentation and blank lines, so logs, code dumps, READMEs and notes come out looking right. Pick a font size of 10, 12 (default) or 14 points; long files are split across multiple pages automatically. Conversion runs entirely in your browser — your file never leaves your device.","category":"document","categoryName":"Document","keywords":["txt to pdf","text to pdf","convert txt to pdf","txt to pdf converter","text file to pdf","save txt as pdf","txt to pdf online free","free txt to pdf","online text to pdf","plain text to pdf","notepad to pdf","log file to pdf"],"url":"https://toolsly.tools/txt-to-pdf","manifestUrl":"https://toolsly.tools/txt-to-pdf/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".txt"],"mimeTypes":["text/plain",""]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"select","key":"fontSize","label":"Font size","defaultValue":"12","choices":[{"value":"10","label":"10 pt"},{"value":"12","label":"12 pt"},{"value":"14","label":"14 pt"}]},{"type":"select","key":"pageSize","label":"Page size","defaultValue":"a4","choices":[{"value":"a4","label":"A4"},{"value":"letter","label":"US Letter"},{"value":"legal","label":"US Legal"}]}],"invocation":{"webUi":"https://toolsly.tools/txt-to-pdf","api":null}},{"kind":"utility","slug":"ulid-generator","name":"ULID Generator","description":"Generate ULIDs — Universally Unique Lexicographically Sortable Identifiers — that double as a sortable timestamp prefix.","longDescription":"ULIDs are an alternative to UUID v4 that encode the current time in their first 10 characters, then 16 characters of cryptographic randomness. The big win: ULIDs sort by creation time as plain strings — which makes them perfect as database row IDs, log keys, or anywhere you want ordering for free. The 26-character Crockford-base-32 encoding is URL-safe and case-insensitive. Generate one or many at once (up to 100), or override the timestamp to produce a ULID for any past or future moment. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["ulid generator","ulid online","generate ulid","ulid vs uuid","sortable id generator","lexicographic uuid alternative","monotonic ulid","ulid timestamp","ulid decoder","crockford base32 id","unique sortable id","ulid free online","ulid for database","ulid bulk generator","primary key generator"],"badge":"Generator","url":"https://toolsly.tools/ulid-generator","manifestUrl":"https://toolsly.tools/ulid-generator/tool.json","inputs":[{"type":"number","key":"count","label":"How many to generate","defaultValue":1,"min":1,"max":100,"step":1},{"type":"text","key":"timestamp","label":"Override timestamp (optional)","defaultValue":"","placeholder":"ISO date (2024-01-15T12:00:00Z) or millis (1705320000000)","help":"Leave empty to use the current time."},{"type":"boolean","key":"monotonic","label":"Monotonic within the same millisecond","defaultValue":true,"help":"Guarantees a→b→c sort order even when generated in the same ms."}],"outputs":[{"key":"ulids","label":"ULIDs","multiline":true},{"key":"firstTimestamp","label":"First ULID's timestamp"},{"key":"summary","label":"Summary"}],"invocation":{"webUi":"https://toolsly.tools/ulid-generator","api":null}},{"kind":"utility","slug":"unicode-to-text","name":"Unicode Escapes to Text","description":"Decode mixed Unicode escapes (U+XXXX, \\uXXXX, \\u{XXXXX}, \\xHH, &#XXXX;, %uXXXX) back to plain text.","longDescription":"Paste any text with Unicode escape sequences sprinkled in — JavaScript / Java / JSON \\uXXXX, ES2015 \\u{XXXXX}, single-byte \\xHH, HTML &#NNN; and &#xHHHH; entities, U+XXXX UCS notation, or legacy %uXXXX — and the tool decodes every occurrence in one pass. Literal characters around the escapes are left untouched. Surrogate pairs in \\uXXXX form combine automatically into the supplementary code point they represent. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["unicode to text","unicode escape decoder","decode \\u","decode u+","decode html entity","javascript unicode decode","convert unicode to text","decode unicode escape","unescape unicode","\\uXXXX decoder","unicode escape parser","unicode to text online","\\x escape decoder"],"badge":"Decoder","url":"https://toolsly.tools/unicode-to-text","manifestUrl":"https://toolsly.tools/unicode-to-text/tool.json","inputs":[{"type":"text","key":"text","label":"Text with escapes","placeholder":"Hello \\u0041 U+0042 &#67;","multiline":true,"monospace":true,"help":"Recognised forms: U+XXXX, \\uXXXX, \\u{XXXXX}, \\xHH, &#NNN;, &#xHHHH;, %uXXXX."}],"outputs":[{"key":"text","label":"Decoded text","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/unicode-to-text","api":null}},{"kind":"utility","slug":"unix-timestamp-converter","name":"Unix Timestamp Converter","description":"Convert between Unix timestamps and human-readable dates — auto-detects seconds vs milliseconds.","longDescription":"Paste either a Unix timestamp (seconds or milliseconds — auto-detected) or a human-readable date string and instantly see both representations: epoch seconds, epoch milliseconds, ISO 8601, UTC string, local string, and a relative phrase like \"3 days ago\". Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["unix timestamp converter","epoch converter","unix time converter","timestamp to date","date to timestamp","iso 8601 converter","epoch to date","unix epoch","timestamp converter online","timestamp converter free","millisecond timestamp","epoch time","utc timestamp"],"badge":"Converter","url":"https://toolsly.tools/unix-timestamp-converter","manifestUrl":"https://toolsly.tools/unix-timestamp-converter/tool.json","inputs":[{"type":"text","key":"timestamp","label":"Timestamp (seconds or ms)","placeholder":"1700000000","monospace":true,"help":"Auto-detects seconds vs milliseconds."},{"type":"text","key":"humanDate","label":"Or a date string","placeholder":"2024-01-15T10:30:00Z","monospace":true,"help":"Parsed by Date — ISO 8601 works best."}],"outputs":[{"key":"epochSeconds","label":"Epoch (seconds)"},{"key":"epochMillis","label":"Epoch (milliseconds)"},{"key":"iso8601","label":"ISO 8601"},{"key":"utcString","label":"UTC"},{"key":"localString","label":"Local"},{"key":"relative","label":"Relative"}],"invocation":{"webUi":"https://toolsly.tools/unix-timestamp-converter","api":null}},{"kind":"utility","slug":"url-decode","name":"URL Decode","description":"Decode percent-encoded URL text back to its readable form — supports decodeURIComponent and decodeURI.","longDescription":"Paste any percent-encoded string (like %20 or %E2%9C%93) and recover the original text. Pick decodeURIComponent for query values, or decodeURI when working with a whole URL. Malformed sequences are reported instead of throwing. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["url decode","url decoder","url decode online","url decode free","percent decode","percent decoding","decodeuricomponent","decodeuri","url unescape","uri decode","decode url parameters","convert url to text","url decoding tool"],"badge":"Decoder","url":"https://toolsly.tools/url-decode","manifestUrl":"https://toolsly.tools/url-decode/tool.json","inputs":[{"type":"text","key":"text","label":"Encoded text","placeholder":"hello%20world%20%26%20friends","multiline":true,"monospace":true},{"type":"select","key":"mode","label":"Mode","defaultValue":"component","choices":[{"value":"component","label":"decodeURIComponent (recommended)"},{"value":"uri","label":"decodeURI (whole URL)"}],"help":"Use component-mode for query values; URI-mode for full URLs."}],"outputs":[{"key":"decoded","label":"Decoded","multiline":true},{"key":"length","label":"Output length (chars)"}],"invocation":{"webUi":"https://toolsly.tools/url-decode","api":null}},{"kind":"utility","slug":"url-encode","name":"URL Encode","description":"Percent-encode text for safe use in URLs — supports both encodeURIComponent and encodeURI.","longDescription":"Encode any string into the percent-encoded form needed for URL query parameters, path segments, or whole URLs. Pick encodeURIComponent for individual values (escapes every reserved character) or encodeURI when you have an entire URL and want to preserve / : ? & = #. Runs entirely in your browser.","category":"text","categoryName":"Text & Encoding","keywords":["url encode","url encoder","url encode online","url encode free","percent encode","percent encoding","encodeuricomponent","encodeuri","convert text to url","url escape","uri encode","encode url parameters","url encoding tool"],"badge":"Encoder","url":"https://toolsly.tools/url-encode","manifestUrl":"https://toolsly.tools/url-encode/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"hello world & friends","multiline":true,"monospace":true},{"type":"select","key":"mode","label":"Mode","defaultValue":"component","choices":[{"value":"component","label":"encodeURIComponent (recommended)"},{"value":"uri","label":"encodeURI (whole URL)"}],"help":"Use component-mode for query values; URI-mode for full URLs."}],"outputs":[{"key":"encoded","label":"Encoded","multiline":true},{"key":"length","label":"Output length (chars)"}],"invocation":{"webUi":"https://toolsly.tools/url-encode","api":null}},{"kind":"utility","slug":"url-parser","name":"URL Parser","description":"Break a URL into its components — protocol, host, port, path, query parameters, hash — with each query param listed individually.","longDescription":"Paste any URL and see every part broken out for inspection. Handy when an OAuth redirect or webhook is misbehaving, when you need to confirm a query parameter survived URL-encoding, or when you're poking at a complex pre-signed S3 URL. We use the browser's built-in URL constructor, so parsing matches what `fetch` and `<a href>` actually see. Query parameters are also listed one-per-line in `key = value` form. Runs entirely in your browser.","category":"dev","categoryName":"Dev","keywords":["url parser","url decoder","parse url online","url query parameter parser","url breakdown","url to parts","extract query params from url","url inspector","url analyzer","url components","url path extractor","url scheme parser","url hash parser","uri parser online","decode url parameters"],"badge":"Parser","url":"https://toolsly.tools/url-parser","manifestUrl":"https://toolsly.tools/url-parser/tool.json","inputs":[{"type":"text","key":"url","label":"URL","multiline":true,"placeholder":"https://user:pass@example.com:8080/path/to/page?a=1&b=hello#section","defaultValue":""}],"outputs":[{"key":"protocol","label":"Protocol"},{"key":"username","label":"Username"},{"key":"password","label":"Password"},{"key":"hostname","label":"Hostname"},{"key":"port","label":"Port"},{"key":"host","label":"Host (hostname:port)"},{"key":"pathname","label":"Pathname"},{"key":"search","label":"Search (raw)"},{"key":"hash","label":"Hash"},{"key":"origin","label":"Origin"},{"key":"queryParams","label":"Query parameters","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/url-parser","api":null}},{"kind":"utility","slug":"user-agent-parser","name":"User-Agent Parser","description":"Parse a browser User-Agent string into structured browser/engine/OS/device fields.","longDescription":"Decode a User-Agent string into the bits that actually matter — which browser, which engine, which OS, what device. Useful when you're triaging an analytics tag, debugging a bug that only reproduces on one platform, or building feature gates by client capability. The parser library used (ua-parser-js) handles thousands of UA patterns including mobile devices, smart TVs, gaming consoles, bots and the new Sec-CH-UA hints. Runs entirely in your browser.","category":"dev","categoryName":"Dev","keywords":["user agent parser","ua parser online","browser detection from user agent","user agent decoder","parse user agent string","useragent lookup","user agent string analyzer","what is my user agent","user agent inspector","ua-parser online","operating system from user agent","device detection","browser version parser","client hints parser","user agent breakdown"],"badge":"Parser","url":"https://toolsly.tools/user-agent-parser","manifestUrl":"https://toolsly.tools/user-agent-parser/tool.json","inputs":[{"type":"text","key":"ua","label":"User-Agent string","multiline":true,"placeholder":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","defaultValue":""}],"outputs":[{"key":"browserName","label":"Browser"},{"key":"browserVersion","label":"Browser version"},{"key":"engineName","label":"Engine"},{"key":"engineVersion","label":"Engine version"},{"key":"osName","label":"OS"},{"key":"osVersion","label":"OS version"},{"key":"deviceVendor","label":"Device vendor"},{"key":"deviceModel","label":"Device model"},{"key":"deviceType","label":"Device type"},{"key":"cpuArchitecture","label":"CPU architecture"}],"invocation":{"webUi":"https://toolsly.tools/user-agent-parser","api":null}},{"kind":"utility","slug":"uuid-generator","name":"UUID Generator","description":"Generate cryptographically random UUIDs (v4) or time-ordered UUIDs (v7) — runs locally in your browser.","longDescription":"Generate any number of UUIDs in v4 (random) or v7 (time-ordered, sortable) form, and copy them out as standard hyphenated form, hyphen-less, or uppercase. v4 uses crypto.randomUUID; v7 embeds a millisecond timestamp so IDs sort chronologically — perfect for database primary keys. Free, online, runs locally.","category":"text","categoryName":"Text & Encoding","keywords":["uuid generator","uuid generator online","uuid generator free","guid generator","uuid v4 generator","uuid v7 generator","random uuid","time ordered uuid","sortable uuid","bulk uuid generator","uuid online tool","unique id generator","uuid maker"],"badge":"Generator","url":"https://toolsly.tools/uuid-generator","manifestUrl":"https://toolsly.tools/uuid-generator/tool.json","inputs":[{"type":"select","key":"version","label":"Version","defaultValue":"v4","choices":[{"value":"v4","label":"v4 (random)"},{"value":"v7","label":"v7 (time-ordered)"}]},{"type":"number","key":"count","label":"How many","defaultValue":5,"min":1,"max":50,"step":1,"help":"Between 1 and 50."},{"type":"select","key":"format","label":"Format","defaultValue":"default","choices":[{"value":"default","label":"Default (with dashes)"},{"value":"nodash","label":"No dashes"},{"value":"upper","label":"Uppercase (with dashes)"}]}],"outputs":[{"key":"uuids","label":"UUIDs","multiline":true},{"key":"count","label":"Generated"}],"invocation":{"webUi":"https://toolsly.tools/uuid-generator","api":null}},{"kind":"utility","slug":"vat-tax-calculator","name":"VAT / Sales Tax Calculator","description":"Add VAT/sales tax to a net amount, or extract VAT from a gross amount — also derives the tax portion as a standalone figure.","longDescription":"Two-way VAT and sales-tax calculator. In 'Add tax' mode you start with the net (pre-tax) figure and we add the tax. In 'Remove tax' mode you start with the gross (tax-inclusive) figure and we extract the tax that's hidden inside it — useful when only the till receipt or final invoice price is known. Works for any rate: UK 20% VAT, Germany 19%, Sweden 25%, US state sales taxes (5-10%), GST (7-15% depending on country). Pure arithmetic, runs in your browser.","category":"calc","categoryName":"Calculators","keywords":["vat calculator","sales tax calculator","vat to net calculator","add vat to price","remove vat from price","gross to net calculator","net to gross calculator","vat extractor","reverse vat calculator","uk vat calculator","eu vat calculator","gst calculator","sales tax adder","tax inclusive vs exclusive","tax percentage calculator"],"badge":"Calculator","url":"https://toolsly.tools/vat-tax-calculator","manifestUrl":"https://toolsly.tools/vat-tax-calculator/tool.json","inputs":[{"type":"number","key":"amount","label":"Amount","defaultValue":100,"min":0,"step":0.01},{"type":"number","key":"taxRate","label":"Tax rate (%)","defaultValue":20,"min":0,"max":100,"step":0.1},{"type":"select","key":"mode","label":"Mode","defaultValue":"add-tax","choices":[{"value":"add-tax","label":"Add tax (amount is net)"},{"value":"remove-tax","label":"Remove tax (amount is gross)"}]}],"outputs":[{"key":"netAmount","label":"Net (pre-tax)"},{"key":"taxAmount","label":"Tax portion"},{"key":"grossAmount","label":"Gross (incl. tax)"},{"key":"effectiveRate","label":"Effective tax rate"}],"invocation":{"webUi":"https://toolsly.tools/vat-tax-calculator","api":null}},{"kind":"converter","slug":"vcard-qr-code-generator","name":"vCard QR Code Generator","description":"Generate a QR code that contains a digital business card (vCard) — scanning it lets the phone save the contact in one tap.","longDescription":"Turn contact information into a QR code that any phone can scan to save the contact straight into its address book. The QR encodes a standard vCard 3.0 payload — recognised by iOS, Android, Outlook, Apple Contacts, Google Contacts and almost every modern CRM. Perfect for business cards, conference badges, email signatures or display screens. The drop-file area can accept any .txt — its content is ignored; all contact fields come from the options panel below.","category":"text","categoryName":"Text & Encoding","keywords":["vcard qr code generator","business card qr code","contact qr code","vcard qr code free","vcf qr code","digital business card qr","scan contact card qr","contact info qr code","create vcard qr","vcard qr maker","vcard 3.0 qr","save contact qr code","address book qr code","vcard generator png","qr business card maker"],"url":"https://toolsly.tools/vcard-qr-code-generator","manifestUrl":"https://toolsly.tools/vcard-qr-code-generator/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".txt"],"mimeTypes":["text/plain"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"text","key":"fullName","label":"Full name","defaultValue":""},{"type":"text","key":"organization","label":"Organization","defaultValue":""},{"type":"text","key":"title","label":"Job title","defaultValue":""},{"type":"text","key":"phone","label":"Phone","defaultValue":"","placeholder":"+1-555-555-5555"},{"type":"text","key":"email","label":"Email","defaultValue":""},{"type":"text","key":"website","label":"Website","defaultValue":"https://"},{"type":"text","key":"address","label":"Address","defaultValue":"","placeholder":"Street, City, State, Zip, Country"},{"type":"select","key":"errorCorrection","label":"Error correction","defaultValue":"M","choices":[{"value":"L","label":"Low (~7% recovery)"},{"value":"M","label":"Medium (~15%)"},{"value":"Q","label":"Quartile (~25%)"},{"value":"H","label":"High (~30%)"}]},{"type":"number","key":"scale","label":"Scale (px per module)","defaultValue":8,"min":4,"max":16,"step":1}],"invocation":{"webUi":"https://toolsly.tools/vcard-qr-code-generator","api":null}},{"kind":"converter","slug":"video-compress","name":"Compress Video","description":"Shrink a video file by re-encoding to H.264 with a quality preset — free, in-browser.","longDescription":"Reduce a video's file size by re-encoding it as MP4 (H.264 video + AAC audio). Pick a CRF — Constant Rate Factor — preset that trades quality for size: 18 is visually lossless, 23 is a balanced default, 28 is heavy compression, and 32 produces the smallest files at noticeable quality cost. Sources taller than 1080p are downscaled to 1080p so browser ffmpeg.wasm doesn't blow its ~2 GB memory budget mid-encode. Encoding is real-time-ish on modern CPUs — a 5-minute 720p clip typically takes 1–3 minutes. The conversion runs entirely in your browser; the file never leaves your device.","category":"video","categoryName":"Video","keywords":["video compress","compress video online","shrink video","reduce video file size","video compressor","compress mp4","video size reducer","online video compressor","free video compressor","make video smaller","compress video for email","video file shrinker","compress mp4 online"],"url":"https://toolsly.tools/video-compress","manifestUrl":"https://toolsly.tools/video-compress/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp4",".webm",".mkv",".mov",".avi"],"mimeTypes":["video/mp4","video/webm","video/x-matroska","video/quicktime","video/x-msvideo","video/avi"]},"output":{"type":"file","extension":".mp4","mimeType":"video/mp4"},"options":[{"type":"select","key":"crf","label":"Quality preset","defaultValue":"23","choices":[{"value":"18","label":"High quality (CRF 18)"},{"value":"23","label":"Balanced (CRF 23)"},{"value":"28","label":"Smaller (CRF 28)"},{"value":"32","label":"Smallest (CRF 32)"}],"help":"Constant Rate Factor — lower = better quality and larger file. 23 is the standard balanced default."}],"invocation":{"webUi":"https://toolsly.tools/video-compress","api":null}},{"kind":"converter","slug":"video-trimmer","name":"Video Trimmer","description":"Cut a clip from a video file — MP4, WEBM, MKV, MOV, AVI — in your browser.","longDescription":"Trim a video down to just the part you want. Enter a start and end time — in seconds (\"30\"), MM:SS (\"1:15\"), or HH:MM:SS (\"0:01:15\") — and download the clip as MP4. The default \"Fast (copy)\" mode is essentially instant because it copies the existing H.264 stream without re-encoding, but cut points snap to the nearest keyframe — your clip may start a second or two earlier than requested. Pick \"Re-encode H.264\" for a sample-accurate cut at the cost of encoding time. Everything runs locally via ffmpeg.wasm; the file never leaves your device. Re-encoded outputs are also downscaled to a 1080p ceiling so the browser doesn't run out of memory on 4K sources.","category":"video","categoryName":"Video","keywords":["video trimmer","trim video online","cut video online","video cutter free","online video editor","video cutter","trim mp4 online","cut mp4","video clipper","online video trimmer","free video cutter","mp4 trimmer","shorten video online"],"url":"https://toolsly.tools/video-trimmer","manifestUrl":"https://toolsly.tools/video-trimmer/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".mp4",".webm",".mkv",".mov",".avi"],"mimeTypes":["video/mp4","video/webm","video/x-matroska","video/quicktime","video/x-msvideo","video/avi"]},"output":{"type":"file","extension":".mp4","mimeType":"video/mp4"},"options":[{"type":"text","key":"start","label":"Start time","defaultValue":"0","placeholder":"0  or  1:15  or  0:01:15","help":"Seconds, MM:SS or HH:MM:SS. Defaults to the beginning of the video."},{"type":"text","key":"end","label":"End time","defaultValue":"","placeholder":"leave blank for end of video, or +10 for 10s from start","help":"Same format as start. Leave blank to cut through the end. Prefix with \"+\" to mean \"this many seconds after start\" (e.g. \"+10\")."},{"type":"select","key":"format","label":"Cut mode","defaultValue":"copy","choices":[{"value":"copy","label":"Fast (copy — keyframe-snapped)"},{"value":"reencode","label":"Re-encode H.264 (precise, slower)"}],"help":"Copy mode is instant but cuts at the nearest keyframe. Re-encode is sample-accurate but takes time and downscales sources above 1080p."}],"invocation":{"webUi":"https://toolsly.tools/video-trimmer","api":null}},{"kind":"utility","slug":"volume-converter","name":"Volume Converter","description":"Convert between mL, L, cubic meters, US fluid ounces, cups, pints, quarts, and gallons (US + Imperial).","longDescription":"Cooking and engineering recipes both insist on different volume units. This converts between metric (mL, L, m³) and US customary (fluid ounce, cup, pint, quart, gallon) plus the Imperial gallon used in the UK and Commonwealth. The UK gallon is ~20% larger than the US gallon, which is why recipes can go very wrong if you mix them up — the table below shows the difference at a glance. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["volume converter","ml to oz","oz to ml","liters to gallons","gallons to liters","cup to ml","ml to cup","pint to liter","fluid ounce converter","us gallon vs uk gallon","imperial gallon","metric to us cooking","cubic meter to liter","convert volume"],"badge":"Converter","url":"https://toolsly.tools/volume-converter","manifestUrl":"https://toolsly.tools/volume-converter/tool.json","inputs":[{"type":"number","key":"value","label":"Value","defaultValue":1,"step":0.0001},{"type":"select","key":"from","label":"From","defaultValue":"L","choices":[{"value":"mL","label":"mL (milliliter)"},{"value":"L","label":"L (liter)"},{"value":"m3","label":"m³ (cubic meter)"},{"value":"us_floz","label":"US fl oz"},{"value":"us_cup","label":"US cup"},{"value":"us_pint","label":"US pint"},{"value":"us_quart","label":"US quart"},{"value":"us_gal","label":"US gallon"},{"value":"imp_gal","label":"Imperial gallon (UK)"}]},{"type":"select","key":"to","label":"To","defaultValue":"us_gal","choices":[{"value":"mL","label":"mL (milliliter)"},{"value":"L","label":"L (liter)"},{"value":"m3","label":"m³ (cubic meter)"},{"value":"us_floz","label":"US fl oz"},{"value":"us_cup","label":"US cup"},{"value":"us_pint","label":"US pint"},{"value":"us_quart","label":"US quart"},{"value":"us_gal","label":"US gallon"},{"value":"imp_gal","label":"Imperial gallon (UK)"}]}],"outputs":[{"key":"converted","label":"Converted value"},{"key":"ml","label":"In milliliters"},{"key":"table","label":"All units","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/volume-converter","api":null}},{"kind":"converter","slug":"wav-to-flac","name":"WAV to FLAC","description":"Convert WAV audio to FLAC (lossless, smaller files) — free online, no upload.","longDescription":"Compress a WAV file to FLAC without losing any audio quality. FLAC files are typically 40–60% smaller than the equivalent WAV and decode bit-perfect, making it the go-to format for archiving and high-quality libraries. Conversion runs entirely in your browser using ffmpeg.wasm — nothing is uploaded. Expect a few seconds for a 5-minute song; longer files may take a minute or two.","category":"audio","categoryName":"Audio","keywords":["wav to flac","convert wav to flac","wav to flac converter","wav to flac online","wav to flac free","wav to flac online free","change wav to flac","wav flac converter","free wav to flac","online wav to flac converter","lossless wav to flac"],"url":"https://toolsly.tools/wav-to-flac","manifestUrl":"https://toolsly.tools/wav-to-flac/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".wav"],"mimeTypes":["audio/wav","audio/wave","audio/x-wav"]},"output":{"type":"file","extension":".flac","mimeType":"audio/flac"},"options":[],"invocation":{"webUi":"https://toolsly.tools/wav-to-flac","api":null}},{"kind":"converter","slug":"wav-to-mp3","name":"WAV to MP3","description":"Convert WAV audio to MP3 with selectable VBR quality — free online, no upload.","longDescription":"Encode a WAV file as a variable-bitrate MP3 using LAME. VBR generally produces smaller files at the same perceived quality compared to fixed-bitrate encoding. The conversion runs entirely in your browser via ffmpeg.wasm — your audio never touches a server. Expect a few seconds for a typical 5-minute song; longer or higher-quality settings may take a minute or two.","category":"audio","categoryName":"Audio","keywords":["wav to mp3","convert wav to mp3","wav to mp3 converter","wav to mp3 online","wav to mp3 free","wav to mp3 online free","change wav to mp3","wav mp3 converter","free wav to mp3","online wav to mp3 converter"],"url":"https://toolsly.tools/wav-to-mp3","manifestUrl":"https://toolsly.tools/wav-to-mp3/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".wav"],"mimeTypes":["audio/wav","audio/wave","audio/x-wav"]},"output":{"type":"file","extension":".mp3","mimeType":"audio/mpeg"},"options":[{"type":"select","key":"quality","label":"MP3 quality","defaultValue":"2","choices":[{"value":"0","label":"VBR best (~245 kbps)"},{"value":"2","label":"VBR high (~190 kbps)"},{"value":"4","label":"VBR medium (~165 kbps)"},{"value":"6","label":"VBR low (~115 kbps)"},{"value":"9","label":"VBR lowest (~65 kbps)"}],"help":"Lower numbers = better quality and larger files."}],"invocation":{"webUi":"https://toolsly.tools/wav-to-mp3","api":null}},{"kind":"converter","slug":"wav-to-ogg","name":"WAV to OGG","description":"Convert WAV audio to Ogg Vorbis — free online, no upload.","longDescription":"Encode an uncompressed WAV file as Ogg Vorbis to dramatically shrink its size while keeping the audio sounding good. Vorbis is a free, open lossy codec — like MP3 but more efficient at low bitrates. Because the encode is lossy, the exact original samples can't be recovered from the resulting .ogg; pick a higher quality setting if you care about fidelity. The conversion runs entirely in your browser via ffmpeg.wasm — your file never leaves your device.","category":"audio","categoryName":"Audio","keywords":["wav to ogg","convert wav to ogg","wav to ogg converter","wav to ogg online","wav to ogg free","wav to ogg online free","change wav to ogg","wav ogg converter","free wav to ogg","online wav to ogg converter","wav to vorbis"],"url":"https://toolsly.tools/wav-to-ogg","manifestUrl":"https://toolsly.tools/wav-to-ogg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".wav"],"mimeTypes":["audio/wav","audio/x-wav","audio/wave"]},"output":{"type":"file","extension":".ogg","mimeType":"audio/ogg"},"options":[{"type":"select","key":"quality","label":"Vorbis quality","defaultValue":"6","choices":[{"value":"10","label":"Highest (~500 kbps)"},{"value":"8","label":"High (~256 kbps)"},{"value":"6","label":"Medium (~192 kbps)"},{"value":"4","label":"Low (~128 kbps)"},{"value":"2","label":"Lowest (~96 kbps)"}],"help":"Higher numbers = better quality and larger files."}],"invocation":{"webUi":"https://toolsly.tools/wav-to-ogg","api":null}},{"kind":"utility","slug":"wcag-contrast-checker","name":"WCAG Contrast Checker","description":"Check WCAG 2.1 contrast ratio for any foreground/background pair — AA & AAA, normal & large text.","longDescription":"Calculate the contrast ratio between a foreground and a background color using the official WCAG 2.1 luminance formula. The tool reports the ratio (e.g. \"4.52:1\") and pass/fail status for all four conformance levels: AA Normal (≥4.5:1), AA Large (≥3:1), AAA Normal (≥7:1), and AAA Large (≥4.5:1). Use this to verify body text, headings, button labels, and link colors meet accessibility minimums. Algorithm: linearize each sRGB channel via the gamma curve, weight as 0.2126·R + 0.7152·G + 0.0722·B for relative luminance, then compute (Llight + 0.05) / (Ldark + 0.05). All math runs in your browser.","category":"color","categoryName":"Color","keywords":["wcag contrast checker","wcag contrast ratio","wcag contrast online","accessibility contrast","color contrast checker","a11y contrast tool","aa contrast check","aaa contrast check","text contrast ratio","wcag 2.1 contrast","contrast ratio calculator","wcag color checker free"],"badge":"Audit","url":"https://toolsly.tools/wcag-contrast-checker","manifestUrl":"https://toolsly.tools/wcag-contrast-checker/tool.json","inputs":[{"type":"text","key":"fg","label":"Foreground color","placeholder":"#111827","defaultValue":"#111827","monospace":true,"help":"Text or icon color."},{"type":"text","key":"bg","label":"Background color","placeholder":"#ffffff","defaultValue":"#ffffff","monospace":true}],"outputs":[{"key":"ratio","label":"Contrast ratio"},{"key":"aaNormal","label":"AA Normal (≥4.5:1)"},{"key":"aaLarge","label":"AA Large (≥3:1)"},{"key":"aaaNormal","label":"AAA Normal (≥7:1)"},{"key":"aaaLarge","label":"AAA Large (≥4.5:1)"},{"key":"luminance","label":"Relative luminance (fg / bg)"},{"key":"preview","label":"Sample","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/wcag-contrast-checker","api":null}},{"kind":"converter","slug":"webm-to-mp3","name":"WEBM to MP3","description":"Extract the audio track from a WEBM video as an MP3 file — free online.","longDescription":"Pull the audio track out of a WEBM file and save it as a high-quality VBR MP3 (around 190 kbps, ffmpeg quality 2). The video stream is discarded — this is the right tool when you want a podcast, lecture, music clip, or voice memo extracted from a WEBM video (the format you typically get from web recordings, YouTube downloads, or OBS captures). The conversion runs locally via ffmpeg.wasm, so your file never leaves your device. WEBM commonly contains Opus or Vorbis audio, both of which are lossy, so the resulting MP3 is a re-encode of already-lossy audio — fine for sharing, but not the best path if you need maximum fidelity.","category":"video","categoryName":"Video","keywords":["webm to mp3","convert webm to mp3","webm to mp3 converter","webm to mp3 online","webm to mp3 free","online webm to mp3","change webm to mp3","webm mp3 converter","free webm to mp3","online webm to mp3 converter","extract audio from webm","webm audio extractor","webm to mp3 converter online","video to mp3"],"url":"https://toolsly.tools/webm-to-mp3","manifestUrl":"https://toolsly.tools/webm-to-mp3/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".webm"],"mimeTypes":["video/webm"]},"output":{"type":"file","extension":".mp3","mimeType":"audio/mpeg"},"options":[],"invocation":{"webUi":"https://toolsly.tools/webm-to-mp3","api":null}},{"kind":"converter","slug":"webm-to-mp4","name":"WebM to MP4","description":"Convert WebM video to MP4 (H.264 + AAC) — free online, no upload.","longDescription":"Re-encode a WebM file as an MP4 with H.264 video and AAC audio — the most universally playable video format, supported by every phone, TV, and editor. The conversion runs locally via ffmpeg.wasm, so your file never leaves your browser. Performance depends on your CPU: expect roughly real-time encoding for short clips (a 5-minute 720p video may take 1–2 minutes). Sources taller than 1080p are automatically downscaled to 1080p so the browser does not run out of memory mid-encode; for best results keep inputs under about 500 MB.","category":"video","categoryName":"Video","keywords":["webm to mp4","convert webm to mp4","webm to mp4 converter","webm to mp4 online","webm to mp4 free","online webm to mp4","change webm to mp4","webm mp4 converter","free webm to mp4","online webm to mp4 converter","webm to h264","encode webm as mp4"],"url":"https://toolsly.tools/webm-to-mp4","manifestUrl":"https://toolsly.tools/webm-to-mp4/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".webm"],"mimeTypes":["video/webm"]},"output":{"type":"file","extension":".mp4","mimeType":"video/mp4"},"options":[{"type":"number","key":"crf","label":"Quality (CRF)","defaultValue":23,"min":18,"max":30,"step":1,"help":"Constant Rate Factor — lower = better quality and larger file. 23 is a sensible default; 18 is visually lossless; 28+ is heavy compression."}],"invocation":{"webUi":"https://toolsly.tools/webm-to-mp4","api":null}},{"kind":"converter","slug":"webp-cropper","name":"WebP Cropper","description":"Crop WebP images in your browser — keeps transparency, tunable quality.","longDescription":"Drop in a WebP, drag a crop selection, and download the cropped WebP. WebP supports transparency, and you can tune the encode quality between 1 and 100. Conversion runs entirely in your browser — files never get uploaded.","category":"image","categoryName":"Image","keywords":["webp cropper","crop webp online","webp crop tool","online webp cropper","crop webp image","free webp cropper","webp crop online","trim webp","crop webp free","browser webp cropper","webp image cropper","cut webp"],"url":"https://toolsly.tools/webp-cropper","manifestUrl":"https://toolsly.tools/webp-cropper/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".webp"],"mimeTypes":["image/webp"]},"output":{"type":"file","extension":".webp","mimeType":"image/webp"},"options":[{"type":"number","key":"quality","label":"WebP quality","defaultValue":90,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality. WebP usually looks great even at 75–85."}],"invocation":{"webUi":"https://toolsly.tools/webp-cropper","api":null}},{"kind":"converter","slug":"webp-to-avif","name":"WebP to AVIF","description":"Convert WebP images to AVIF — next-gen compression, runs in your browser.","longDescription":"Drop in a WebP and download an AVIF. AVIF typically produces files 20–40% smaller than WebP at the same visual quality, with excellent support for transparency and HDR. Note: AVIF encoding via Canvas requires a recent Chromium-based browser (Chrome 85+, Edge 121+, Opera 71+). Firefox and Safari can decode AVIF but cannot encode it via Canvas — try Chrome if you hit an error. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["webp to avif","convert webp to avif","webp to avif converter","webp to avif online","webp to avif free","webp to avif online free","change webp to avif","webp avif converter","free webp to avif","online webp to avif converter"],"url":"https://toolsly.tools/webp-to-avif","manifestUrl":"https://toolsly.tools/webp-to-avif/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".webp"],"mimeTypes":["image/webp"]},"output":{"type":"file","extension":".avif","mimeType":"image/avif"},"options":[{"type":"number","key":"quality","label":"AVIF quality","defaultValue":80,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."}],"invocation":{"webUi":"https://toolsly.tools/webp-to-avif","api":null}},{"kind":"converter","slug":"webp-to-bmp","name":"WebP to BMP","description":"Convert WebP images to BMP (Windows Bitmap) — uncompressed, runs in your browser.","longDescription":"Drop in a WebP and download a 24-bit uncompressed BMP. BMP files are large but supported by every Windows app and many legacy tools. Transparent pixels are flattened against the background color you pick — BMP has no alpha channel. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["webp to bmp","convert webp to bmp","webp to bmp converter","webp to bmp online","webp to bmp free","webp to bmp online free","change webp to bmp","webp bmp converter","free webp to bmp","online webp to bmp converter"],"url":"https://toolsly.tools/webp-to-bmp","manifestUrl":"https://toolsly.tools/webp-to-bmp/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".webp"],"mimeTypes":["image/webp"]},"output":{"type":"file","extension":".bmp","mimeType":"image/bmp"},"options":[{"type":"select","key":"background","label":"Background (for transparent areas)","defaultValue":"#ffffff","choices":[{"value":"#ffffff","label":"White"},{"value":"#000000","label":"Black"},{"value":"#f3f4f6","label":"Light gray"}],"help":"BMP has no transparency, so transparent pixels get filled with this color."}],"invocation":{"webUi":"https://toolsly.tools/webp-to-bmp","api":null}},{"kind":"converter","slug":"webp-to-jpg","name":"WebP to JPG","description":"Convert WebP images to JPG (JPEG) — universal compatibility, runs in your browser.","longDescription":"Drop in any WebP file and download a JPG. JPG has no transparency, so transparent pixels are flattened against the background color you pick. Conversion happens locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["webp to jpg","webp to jpeg","convert webp to jpg","webp to jpg converter","webp to jpg online","webp to jpg free","webp to jpg online free","change webp to jpg","webp jpeg converter","free webp to jpg","online webp to jpg converter"],"url":"https://toolsly.tools/webp-to-jpg","manifestUrl":"https://toolsly.tools/webp-to-jpg/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".webp"],"mimeTypes":["image/webp"]},"output":{"type":"file","extension":".jpg","mimeType":"image/jpeg"},"options":[{"type":"number","key":"quality","label":"JPG quality","defaultValue":92,"min":1,"max":100,"step":1,"help":"Higher = larger file, better quality."},{"type":"select","key":"background","label":"Background (for transparent areas)","defaultValue":"#ffffff","choices":[{"value":"#ffffff","label":"White"},{"value":"#000000","label":"Black"},{"value":"#f3f4f6","label":"Light gray"}],"help":"JPG has no transparency, so transparent pixels get filled with this color."}],"invocation":{"webUi":"https://toolsly.tools/webp-to-jpg","api":null}},{"kind":"converter","slug":"webp-to-pdf","name":"WebP to PDF","description":"Convert a WebP image into a single-page PDF — fit-to-page, runs in your browser.","longDescription":"Drop in a WebP and download a single-page PDF with the image centered on the page. The image is fit to the page with a small margin, preserving aspect ratio. Transparent pixels are flattened against a white page background. Choose A4, US Letter, or US Legal; orientation defaults to whichever matches the image aspect. Conversion runs locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["webp to pdf","convert webp to pdf","webp to pdf converter","webp to pdf online","webp to pdf free","webp to pdf online free","image to pdf","webp image to pdf","free webp to pdf","online webp to pdf converter","webp pdf converter"],"url":"https://toolsly.tools/webp-to-pdf","manifestUrl":"https://toolsly.tools/webp-to-pdf/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".webp"],"mimeTypes":["image/webp"]},"output":{"type":"file","extension":".pdf","mimeType":"application/pdf"},"options":[{"type":"select","key":"pageSize","label":"Page size","defaultValue":"a4","choices":[{"value":"a4","label":"A4"},{"value":"letter","label":"US Letter"},{"value":"legal","label":"US Legal"}]},{"type":"select","key":"orientation","label":"Orientation","defaultValue":"auto","choices":[{"value":"auto","label":"Auto (match image)"},{"value":"portrait","label":"Portrait"},{"value":"landscape","label":"Landscape"}]}],"invocation":{"webUi":"https://toolsly.tools/webp-to-pdf","api":null}},{"kind":"converter","slug":"webp-to-png","name":"WebP to PNG","description":"Convert WebP images to PNG — lossless, transparent, runs in your browser.","longDescription":"Drop in a WebP and download a PNG. PNG is universally supported and lossless, so any transparency in your WebP is preserved exactly. Conversion happens locally in your browser — files never leave your device.","category":"image","categoryName":"Image","keywords":["webp to png","convert webp to png","webp to png converter","webp to png online","webp to png free","webp to png online free","change webp to png","webp png converter","free webp to png","online webp to png converter"],"url":"https://toolsly.tools/webp-to-png","manifestUrl":"https://toolsly.tools/webp-to-png/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".webp"],"mimeTypes":["image/webp"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[],"invocation":{"webUi":"https://toolsly.tools/webp-to-png","api":null}},{"kind":"utility","slug":"weight-converter","name":"Weight Converter","description":"Convert between metric and imperial weight units — mg, g, kg, tonnes, ounces, pounds, stone, US tons.","longDescription":"Convert any mass from milligrams to US short tons. Uses the exact international definitions (1 lb = 453.59237 g, 1 oz = 1/16 lb, 1 stone = 14 lb, 1 US short ton = 2,000 lb), so imperial-to-metric conversions are precise rather than rounded. The table at the bottom shows your value in every common unit at once. Runs entirely in your browser.","category":"calc","categoryName":"Calculators","keywords":["weight converter","mass converter","kg to lbs","lbs to kg","lb to kg","g to oz","oz to g","stone to lbs","stone to kg","tonnes to tons","grams to ounces","mg to g","pounds to kilograms","kilograms to pounds"],"badge":"Converter","url":"https://toolsly.tools/weight-converter","manifestUrl":"https://toolsly.tools/weight-converter/tool.json","inputs":[{"type":"number","key":"value","label":"Value","defaultValue":1,"step":0.0001},{"type":"select","key":"from","label":"From","defaultValue":"kg","choices":[{"value":"mg","label":"mg (milligram)"},{"value":"g","label":"g (gram)"},{"value":"kg","label":"kg (kilogram)"},{"value":"t","label":"t (metric tonne)"},{"value":"oz","label":"oz (ounce)"},{"value":"lb","label":"lb (pound)"},{"value":"st","label":"st (stone, 14 lb)"},{"value":"ton","label":"ton (US short ton, 2000 lb)"}]},{"type":"select","key":"to","label":"To","defaultValue":"lb","choices":[{"value":"mg","label":"mg (milligram)"},{"value":"g","label":"g (gram)"},{"value":"kg","label":"kg (kilogram)"},{"value":"t","label":"t (metric tonne)"},{"value":"oz","label":"oz (ounce)"},{"value":"lb","label":"lb (pound)"},{"value":"st","label":"st (stone, 14 lb)"},{"value":"ton","label":"ton (US short ton, 2000 lb)"}]}],"outputs":[{"key":"converted","label":"Converted value"},{"key":"grams","label":"In grams"},{"key":"table","label":"All units","multiline":true}],"invocation":{"webUi":"https://toolsly.tools/weight-converter","api":null}},{"kind":"converter","slug":"wifi-qr-code-generator","name":"Wi-Fi QR Code Generator","description":"Generate a Wi-Fi QR code as a PNG — scanning it auto-joins the network. Supports WPA / WEP / open networks and hidden SSIDs.","longDescription":"Create a QR code that, when scanned by any modern phone, prompts the user to join your Wi-Fi network without typing the password. The QR encodes the standard `WIFI:T:<auth>;S:<ssid>;P:<password>;H:<hidden>;;` payload that iOS and Android camera apps natively recognise. Pick the auth type (WPA/WPA2/WPA3, WEP, or open/no password), enter the SSID and password, and we render a high-contrast PNG. Special characters in the SSID/password are properly escaped per the spec. The drop-file area can accept any .txt — its content is ignored; all configuration comes from the options panel.","category":"text","categoryName":"Text & Encoding","keywords":["wifi qr code generator","wifi qr code","wifi password qr code","wifi sharing qr code","guest wifi qr code","wifi qr code free","create wifi qr code","wpa wifi qr code","wpa2 qr code","wifi connect qr","auto-join wifi qr code","hidden ssid qr code","wifi qr code maker","print wifi qr code","wifi qr code online"],"url":"https://toolsly.tools/wifi-qr-code-generator","manifestUrl":"https://toolsly.tools/wifi-qr-code-generator/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".txt"],"mimeTypes":["text/plain"]},"output":{"type":"file","extension":".png","mimeType":"image/png"},"options":[{"type":"text","key":"ssid","label":"Network name (SSID)","defaultValue":"MyNetwork","placeholder":"MyHomeWiFi"},{"type":"text","key":"password","label":"Password","defaultValue":"","placeholder":"Network password (leave empty for open networks)"},{"type":"select","key":"authType","label":"Security","defaultValue":"WPA","choices":[{"value":"WPA","label":"WPA / WPA2 / WPA3"},{"value":"WEP","label":"WEP (legacy)"},{"value":"nopass","label":"None (open network)"}]},{"type":"boolean","key":"hidden","label":"Hidden SSID (not broadcast)","defaultValue":false},{"type":"select","key":"errorCorrection","label":"Error correction","defaultValue":"M","choices":[{"value":"L","label":"Low (~7% recovery)"},{"value":"M","label":"Medium (~15%)"},{"value":"Q","label":"Quartile (~25%)"},{"value":"H","label":"High (~30%)"}]},{"type":"number","key":"scale","label":"Scale (px per module)","defaultValue":8,"min":4,"max":16,"step":1}],"invocation":{"webUi":"https://toolsly.tools/wifi-qr-code-generator","api":null}},{"kind":"utility","slug":"word-counter","name":"Word Counter","description":"Count the words in any text — plus characters, lines, paragraphs and estimated reading time. Free, online, no signup.","longDescription":"Paste an essay, blog post, article or any text and instantly see the word count, with characters (with and without spaces), line count, paragraph count and an estimated reading time at 250 words per minute. Useful for hitting word-count limits on essays, papers, articles, social media posts (Twitter, LinkedIn), product descriptions and SEO meta descriptions. Counting runs entirely in your browser — nothing is uploaded, the text stays on this page.","category":"text","categoryName":"Text & Encoding","keywords":["word counter","word counter online","word counter free","word count tool","text word counter","free word counter","online word counter","essay word counter","blog post word counter","word counter no signup","count words in text","writing word counter","word count checker"],"badge":"Counter","url":"https://toolsly.tools/word-counter","manifestUrl":"https://toolsly.tools/word-counter/tool.json","inputs":[{"type":"text","key":"text","label":"Text","placeholder":"Paste your text here…","multiline":true}],"outputs":[{"key":"words","label":"Words"},{"key":"characters","label":"Characters (with spaces)"},{"key":"charactersNoSpace","label":"Characters (no spaces)"},{"key":"lines","label":"Lines"},{"key":"paragraphs","label":"Paragraphs"},{"key":"readingTime","label":"Reading time"}],"invocation":{"webUi":"https://toolsly.tools/word-counter","api":null}},{"kind":"converter","slug":"xlsx-to-csv","name":"XLSX to CSV","description":"Convert an Excel spreadsheet (.xlsx / .xls) to a CSV file — free online, no upload.","longDescription":"Drop in a .xlsx or .xls workbook and download a CSV. By default the first worksheet is exported; specify a sheet name in the options to pick a different one. Formulas are evaluated to their cached values; dates are rendered as ISO-like strings. Output uses standard RFC 4180 quoting. Conversion runs entirely in your browser — your workbook never leaves your device.","category":"document","categoryName":"Document","keywords":["xlsx to csv","xlsx to csv online","xlsx to csv converter","xlsx to csv free","excel to csv","excel to csv online","excel to csv converter","convert xlsx to csv","convert excel to csv","xls to csv","xlsx converter","excel converter"],"url":"https://toolsly.tools/xlsx-to-csv","manifestUrl":"https://toolsly.tools/xlsx-to-csv/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".xlsx",".xls"],"mimeTypes":["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-excel","application/octet-stream",""]},"output":{"type":"file","extension":".csv","mimeType":"text/csv"},"options":[{"type":"text","key":"sheet","label":"Sheet name","defaultValue":"","placeholder":"Leave empty for the first sheet","help":"Name of the worksheet to export. Leave empty to use the first sheet."}],"invocation":{"webUi":"https://toolsly.tools/xlsx-to-csv","api":null}},{"kind":"converter","slug":"xlsx-to-json","name":"XLSX to JSON","description":"Convert an Excel spreadsheet (.xlsx / .xls) to pretty-printed JSON — free online, no upload.","longDescription":"Drop in a .xlsx or .xls workbook and download a JSON document. In \"Array of objects\" mode (default), the first row is used as object keys and each subsequent row becomes a keyed object. In \"Array of arrays\" mode, every row is emitted as a list of cell values — useful for sparse or header-less sheets. By default the first worksheet is exported; specify a sheet name to pick a different one. Output is pretty-printed with 2-space indentation. Conversion runs entirely in your browser — your workbook never leaves your device.","category":"document","categoryName":"Document","keywords":["xlsx to json","xlsx to json online","xlsx to json converter","xlsx to json free","excel to json","excel to json online","excel to json converter","convert xlsx to json","convert excel to json","xls to json","spreadsheet to json","excel sheet to json"],"url":"https://toolsly.tools/xlsx-to-json","manifestUrl":"https://toolsly.tools/xlsx-to-json/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".xlsx",".xls"],"mimeTypes":["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-excel","application/octet-stream",""]},"output":{"type":"file","extension":".json","mimeType":"application/json"},"options":[{"type":"text","key":"sheet","label":"Sheet name","defaultValue":"","placeholder":"Leave empty for the first sheet","help":"Name of the worksheet to export. Leave empty to use the first sheet."},{"type":"select","key":"mode","label":"Output shape","defaultValue":"objects","choices":[{"value":"objects","label":"Array of objects (header row)"},{"value":"arrays","label":"Array of arrays"}],"help":"Whether to use the first row as object keys, or emit each row as a list."}],"invocation":{"webUi":"https://toolsly.tools/xlsx-to-json","api":null}},{"kind":"utility","slug":"xml-formatter","name":"XML Formatter","description":"Pretty-print XML documents — indent nested tags with 2 or 4 spaces for readable markup.","longDescription":"Paste minified or single-line XML and get a cleanly indented version with each element on its own line. Declarations, comments, CDATA blocks and attributes are preserved exactly. Pick 2 or 4 spaces of indentation. Powered by xml-js. Runs entirely in your browser — your document never leaves this page.","category":"dev","categoryName":"Dev","keywords":["xml formatter","xml formatter online","format xml online","pretty print xml","xml beautifier","xml prettifier","online xml formatter","xml indent","xml formatter free","format xml document","xml pretty","reformat xml"],"badge":"Formatter","url":"https://toolsly.tools/xml-formatter","manifestUrl":"https://toolsly.tools/xml-formatter/tool.json","inputs":[{"type":"text","key":"xml","label":"XML","placeholder":"<root><item id=\"1\">Hello</item></root>","multiline":true,"monospace":true},{"type":"select","key":"indent","label":"Indent","defaultValue":"2","choices":[{"value":"2","label":"2 spaces"},{"value":"4","label":"4 spaces"}]}],"outputs":[{"key":"formatted","label":"Formatted XML","multiline":true},{"key":"originalSize","label":"Original size (chars)"},{"key":"formattedSize","label":"Formatted size (chars)"}],"invocation":{"webUi":"https://toolsly.tools/xml-formatter","api":null}},{"kind":"converter","slug":"xml-to-json","name":"XML to JSON","description":"Convert XML to pretty-printed JSON — free online, no upload.","longDescription":"Drop in an .xml file and download an equivalent JSON document. Elements, attributes and text content are mapped using the compact xml-js representation: attributes appear under a `_attributes` key, text content under `_text`. Indentation is 2 spaces. Runs entirely in your browser — your file never leaves your device.","category":"document","categoryName":"Document","keywords":["xml to json","convert xml to json","xml to json converter","xml to json online","xml to json free","change xml to json","xml json converter","free xml to json","online xml to json converter","xml to json online free","xml json conversion","xml file to json"],"url":"https://toolsly.tools/xml-to-json","manifestUrl":"https://toolsly.tools/xml-to-json/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".xml"],"mimeTypes":["application/xml","text/xml","text/plain",""]},"output":{"type":"file","extension":".json","mimeType":"application/json"},"options":[],"invocation":{"webUi":"https://toolsly.tools/xml-to-json","api":null}},{"kind":"converter","slug":"xml-to-yaml","name":"XML to YAML","description":"Convert an XML document to clean, readable YAML — free online, no upload.","longDescription":"Drop in an .xml file (or paste the XML) and download a `.yaml` document. The conversion runs the XML through xml-js's compact mode, then strips the `_text` / `_attributes` boilerplate so the YAML output stays readable. Note: XML attributes are dropped when an element has both attributes and text content — if you need a lossless representation use the XML → JSON tool instead. Conversion runs entirely in your browser.","category":"document","categoryName":"Document","keywords":["xml to yaml","xml to yml","convert xml to yaml","xml to yaml converter","xml to yaml online","xml to yaml free","xml yaml converter","online xml to yaml","xml to yaml online free","free xml to yaml","xml document to yaml","xml file to yaml"],"url":"https://toolsly.tools/xml-to-yaml","manifestUrl":"https://toolsly.tools/xml-to-yaml/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".xml"],"mimeTypes":["application/xml","text/xml","text/plain",""]},"output":{"type":"file","extension":".yaml","mimeType":"text/yaml"},"options":[],"invocation":{"webUi":"https://toolsly.tools/xml-to-yaml","api":null}},{"kind":"utility","slug":"yaml-formatter","name":"YAML Formatter","description":"Reformat YAML — normalize indentation, line wrapping and quoting for tidy config files.","longDescription":"Paste any YAML and get a canonical, reformatted version. The document is parsed and re-emitted with the indent size and line-width of your choice, so anchors are resolved, quoting is normalized and inconsistent indentation is fixed. Set the line width to 0 to disable wrapping entirely. Powered by the eemeli/yaml library. Runs entirely in your browser — your config never leaves this page.","category":"dev","categoryName":"Dev","keywords":["yaml formatter","yaml formatter online","format yaml online","pretty print yaml","yaml beautifier","yaml prettifier","yml formatter","yaml indent","online yaml formatter","yaml formatter free","reformat yaml","yaml lint"],"badge":"Formatter","url":"https://toolsly.tools/yaml-formatter","manifestUrl":"https://toolsly.tools/yaml-formatter/tool.json","inputs":[{"type":"text","key":"yaml","label":"YAML","placeholder":"name: example\nitems: [a, b, c]","multiline":true,"monospace":true},{"type":"select","key":"indent","label":"Indent","defaultValue":"2","choices":[{"value":"2","label":"2 spaces"},{"value":"4","label":"4 spaces"}]},{"type":"number","key":"lineWidth","label":"Line width (0 = no wrap)","defaultValue":0,"min":0,"max":200,"step":10}],"outputs":[{"key":"formatted","label":"Formatted YAML","multiline":true},{"key":"originalSize","label":"Original size (chars)"},{"key":"formattedSize","label":"Formatted size (chars)"}],"invocation":{"webUi":"https://toolsly.tools/yaml-formatter","api":null}},{"kind":"converter","slug":"yaml-to-csv","name":"YAML to CSV","description":"Convert a YAML list into a CSV spreadsheet — free online, no upload.","longDescription":"Drop in a .yaml or .yml file whose root is a list of flat mappings (one row per list item) and download a CSV. Headers are derived from the union of mapping keys. Single mappings are wrapped in a one-item list automatically. Conversion runs entirely in your browser — your file never leaves your device.","category":"document","categoryName":"Document","keywords":["yaml to csv","yml to csv","convert yaml to csv","yaml to csv converter","yaml to csv online","yaml to csv free","change yaml to csv","yaml csv converter","free yaml to csv","online yaml to csv converter","yaml to csv online free","yaml to spreadsheet"],"url":"https://toolsly.tools/yaml-to-csv","manifestUrl":"https://toolsly.tools/yaml-to-csv/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".yaml",".yml"],"mimeTypes":["text/yaml","application/yaml","text/plain",""]},"output":{"type":"file","extension":".csv","mimeType":"text/csv"},"options":[],"invocation":{"webUi":"https://toolsly.tools/yaml-to-csv","api":null}},{"kind":"converter","slug":"yaml-to-json","name":"YAML to JSON","description":"Convert YAML to pretty-printed JSON — free online, no upload.","longDescription":"Drop in a .yaml or .yml file and download an equivalent JSON document with 2-space indentation. Anchors, aliases and YAML's native types (numbers, booleans, dates, nulls) are mapped to their JSON equivalents. Runs entirely in your browser — your file never leaves your device.","category":"document","categoryName":"Document","keywords":["yaml to json","yml to json","convert yaml to json","yaml to json converter","yaml to json online","yaml to json free","change yaml to json","yaml json converter","free yaml to json","online yaml to json converter","yaml to json online free","yml json converter"],"url":"https://toolsly.tools/yaml-to-json","manifestUrl":"https://toolsly.tools/yaml-to-json/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".yaml",".yml"],"mimeTypes":["text/yaml","application/yaml","text/plain",""]},"output":{"type":"file","extension":".json","mimeType":"application/json"},"options":[],"invocation":{"webUi":"https://toolsly.tools/yaml-to-json","api":null}},{"kind":"converter","slug":"yaml-to-xml","name":"YAML to XML","description":"Convert YAML to a well-formed XML document — free online, no upload.","longDescription":"Drop in a .yaml or .yml file (or paste the YAML) and download an XML document. Mappings become elements, sequences become repeated sibling elements, and primitives become element text. If the top-level YAML value isn't a single-keyed mapping (i.e. it's a list, a scalar, or has multiple keys), the structure is wrapped under a `<root>` element so the output is well-formed. Indentation is 2 spaces and an XML declaration is included. Conversion runs entirely in your browser.","category":"document","categoryName":"Document","keywords":["yaml to xml","yml to xml","convert yaml to xml","yaml to xml converter","yaml to xml online","yaml to xml free","yaml xml converter","yml xml converter","online yaml to xml","yaml to xml online free","free yaml to xml","yaml document to xml"],"url":"https://toolsly.tools/yaml-to-xml","manifestUrl":"https://toolsly.tools/yaml-to-xml/tool.json","runsOn":"client","multiple":false,"batch":false,"input":{"type":"file","extensions":[".yaml",".yml"],"mimeTypes":["text/yaml","application/yaml","text/plain",""]},"output":{"type":"file","extension":".xml","mimeType":"application/xml"},"options":[],"invocation":{"webUi":"https://toolsly.tools/yaml-to-xml","api":null}}]}