[{"id":"chroma-key","href":"/en/tools/chroma-key/","title":"Chroma Key","tags":"image chroma-key transparency","search":"chroma-key image chroma-key transparency background-removal green-screen chroma key make a background color transparent make a chosen color, and everything within its tolerance, transparent. pick the target with the color picker or by clicking the canvas, widen the range with tolerance, and soften the edge with smoothing. output is always png so transparency survives, and every step runs inside your browser."},{"id":"cors-preflight-predictor","href":"/en/tools/cors-preflight-predictor/","title":"CORS Preflight","tags":"cors fetch preflight","search":"cors-preflight-predictor cors fetch preflight http cors preflight tell whether options goes first enter the method, request headers and content-type to find out whether a cross-origin request triggers an options preflight, along with the condition that caused it. application/json is not on the safelist, so it alone forces a preflight. this is a static prediction based on the fetch standard's safelist."},{"id":"cross-platform-filename-scanner","href":"/en/tools/cross-platform-filename-scanner/","title":"Filename Scanner","tags":"filename windows unicode","search":"cross-platform-filename-scanner filename windows unicode portability filename scanner find names that break across oses hand it a list of relative paths and it surfaces windows reserved names and forbidden characters, collisions that differ only in case, and collisions that unicode normalization would merge. file contents are never read — only the path strings. it renames nothing, stopping at the suspect paths so nothing is changed by mistake."},{"id":"dst-local-time-checker","href":"/en/tools/dst-local-time-checker/","title":"DST Boundary","tags":"dst timezone scheduling","search":"dst-local-time-checker dst timezone scheduling intl dst boundary find times that vanish or repeat determine whether a local time in an iana time zone resolves uniquely, occurs twice on the day the clocks go back, or does not exist at all on the day they go forward. a repeated time maps to two different utc instants; a nonexistent one maps to none. results depend on your browser's intl time zone data."},{"id":"eye-training-20-20-20","href":"/en/tools/eye-training-20-20-20/","title":"20-20-20","tags":"20-20-20 break-timer eye-strain","search":"eye-training-20-20-20 20-20-20 break-timer eye-strain wellness focus 20-20-20 every 20 minutes, look far for 20 seconds a break timer for the 20-20-20 rule: every 20 minutes, look at something 20 feet (about 6 meters) away for 20 seconds. the point is to mechanically interrupt a long stretch of close focus, between spells of screen work or study. it is an aid for moving your eyes, not a treatment."},{"id":"invisible-character-inspector","href":"/en/tools/invisible-character-inspector/","title":"Invisible Characters","tags":"unicode invisible-character bidi","search":"invisible-character-inspector unicode invisible-character bidi zero-width invisible characters expose zero-width, bom, and bidi controls show the kind and position of zero-width characters, boms, nbsps and bidirectional controls, then strip only the kinds you select. zwj and variation selectors are needed for emoji and for some writing systems, so nothing is removed indiscriminately. the scope is characters that break rendering — this is not a security scanner."},{"id":"sprite-sheet","href":"/en/tools/sprite-sheet/","title":"Sprite Sheet","tags":"video sprite-sheet thumbnail","search":"sprite-sheet video sprite-sheet thumbnail preview webworker sprite sheet lay a video out as thumbnails pull 144 frames at even intervals from a video and lay them out as a single 12×12 sprite sheet — the kind used for a player’s seek preview or as animation source material. decoding and compositing run in a web worker, so the interface stays responsive while it works."},{"id":"uuid-generator","href":"/en/tools/uuid-generator/","title":"UUID","tags":"uuid generator","search":"uuid-generator uuid generator uuid issue v4 and v7 in bulk generate up to 1000 uuids at once, as v4 (random) or v7 (time-ordered), and export them as csv. v7 carries a millisecond unix timestamp in its leading bits, so values sort in creation order and fragment database indexes far less. generation happens entirely inside your browser."},{"id":"cache-control-freshness","href":"/en/tools/cache-control-freshness/","title":"Cache-Control","tags":"cache-control http rfc-9111","search":"cache-control-freshness cache-control http rfc-9111 cdn cache-control compute the remaining freshness work out whether a response is fresh or stale, and how many seconds of freshness remain, from rfc 9111's age calculation and directive precedence. choosing a shared cache makes s-maxage win over max-age. the evaluation time is an explicit input too, so the same input always yields the same result."},{"id":"cipher","href":"/en/tools/cipher/","title":"Pixel Cipher","tags":"image cipher encryption","search":"cipher image cipher encryption aes png metadata privacy web-crypto pixel cipher lock an image behind a password a key derived from your password with pbkdf2 wraps a random aes-ctr key using aes-gcm, and the salt and iv are stored in the png's text chunk. everything needed to decrypt travels inside the image, so the password is the only thing to remember. transparent pixels are skipped to preserve the silhouette."},{"id":"eye-training-saccade","href":"/en/tools/eye-training-saccade/","title":"Saccade","tags":"eye-training saccade eye-strain","search":"eye-training-saccade eye-training saccade eye-strain scanning focus saccade reacquire a target that jumps a one-minute session in which a target jumps from place to place on screen and you refocus on it each time. keep your head still and move only your gaze. it suits the moment when a long stretch of close work has locked your eyes into one way of moving. an aid for taking a break, not a treatment."},{"id":"file-type-mismatch","href":"/en/tools/file-type-mismatch/","title":"File Type Mismatch","tags":"file-signature mime extension","search":"file-type-mismatch file-signature mime extension magic-bytes file type mismatch cross-check extension, mime, and bytes cross-check the extension, the declared mime type and the leading byte signature, and surface the files where the three disagree. anything it cannot identify is marked unknown rather than safe. this is not a security scanner — treat the result as a lead for investigation, not proof of a file format."},{"id":"poster-tile-calculator","href":"/en/tools/poster-tile-calculator/","title":"Poster Tiling","tags":"poster printing tiling","search":"poster-tile-calculator poster printing tiling overlap poster tiling get the sheet count and overlap calculate how many sheets you need and which part of the poster each one covers, from the finished size, paper size, margin and overlap. include the printer's non-printable edge in the margin. start the overlap around 5–10 mm and adjust from there. it does not generate a pdf or split the image for you."},{"id":"unicode-normalization-collision","href":"/en/tools/unicode-normalization-collision/","title":"Normalization Collision","tags":"unicode normalization filename","search":"unicode-normalization-collision unicode normalization filename identifier normalization collision expose names that merge under nfc/nfd find groups of identifiers that look different yet normalize to the same value, reported separately for nfc, nfd, nfkc and nfkd. compatibility normalization can change what unit symbols and styled characters mean, so applying it across the board is not advised. os- and database-specific collation and locale-aware casing are not reproduced."},{"id":"url-encoding","href":"/en/tools/url-encoding/","title":"URL Encoding","tags":"url percent-encoding form-encoding","search":"url-encoding url percent-encoding form-encoding url encoding components, whole urls, form values encode and decode under three separate rules: url component, whole url, and form value. each rule leaves a different set of characters untouched, and only form-value decoding treats + as a space. malformed percent escapes and invalid utf-8 are reported as errors — your input is never silently guessed at."},{"id":"base64-encoding","href":"/en/tools/base64-encoding/","title":"Base64","tags":"base64 base64url utf-8","search":"base64-encoding base64 base64url utf-8 base64 move between standard and base64url convert utf-8 text to standard base64 (+ and /) or base64url (- and _), and back again. base64url is written without padding, while decoding also accepts correctly padded input. an alphabet that does not match the chosen variant, or broken padding, is reported as an error rather than silently corrected."},{"id":"chmod-simulator","href":"/en/tools/chmod-simulator/","title":"chmod","tags":"chmod unix permissions","search":"chmod-simulator chmod unix permissions umask chmod see how the permission bits move apply a numeric mode or a gnu symbolic mode to a current mode and watch how the permission bits and special bits change at each step. x always sets execute, while x applies only to directories and to files that already carry an execute bit. +w respects the umask; a+w ignores it."},{"id":"comparator","href":"/en/tools/comparator/","title":"Image Diff","tags":"image compare diff","search":"comparator image compare diff regression qa image diff paint the pixels that changed overlay two images and paint every pixel beyond your tolerance in magenta. a match rate and a differing-pixel count come with it, so the result can drive a regression check. pixels fully transparent in both images count as matching regardless of rgb. use 0% for a strict comparison and 1–5% after compression."},{"id":"csv-json-table-converter","href":"/en/tools/csv-json-table-converter/","title":"CSV ↔ JSON","tags":"csv json table","search":"csv-json-table-converter csv json table converter csv ↔ json  convert between csv and normalized table json. cells containing a comma or a newline are parsed and written as quoted fields, so their values survive intact. rows with too few columns are padded with empty cells up to the widest row, with a warning. every cell stays a string — no type inference."},{"id":"eye-training-smooth-pursuit","href":"/en/tools/eye-training-smooth-pursuit/","title":"Smooth Pursuit","tags":"eye-training smooth-pursuit eye-strain","search":"eye-training-smooth-pursuit eye-training smooth-pursuit eye-strain focus wellness smooth pursuit track a moving target with your eyes alone a one-minute session in which you hold your head still and track a smoothly moving target with your eyes alone. unlike saccades, which re-catch a jumping target, the gaze never breaks here — it stays matched to the target’s speed. an aid for a break between long stretches of screen work, not a treatment."},{"id":"line-ending-forensics","href":"/en/tools/line-ending-forensics/","title":"Mixed Line Endings","tags":"line-ending crlf text-file","search":"line-ending-forensics line-ending crlf text-file git mixed line endings pin down every lf, crlf, and cr report by line number where lf, crlf and cr are mixed, and produce a version unified to whichever you choose. pasting into the textarea can let the browser or os flatten everything to lf, so use the file picker when you need the original bytes. the fixed version is written as utf-8, and the original file is never overwritten."},{"id":"ascii-tree-generator","href":"/en/tools/ascii-tree-generator/","title":"ASCII Tree","tags":"ascii folder-tree developer-tools","search":"ascii-tree-generator ascii folder-tree developer-tools ascii tree turn indentation into a diagram build a folder tree drawn with ascii or utf-8 box characters from an indented list. markdown bullets are read too, and any name with children is treated as a folder. indent with spaces or tabs as you like, but keep the width consistent within a level. the share url embeds your input and settings as they are."},{"id":"invert-color","href":"/en/tools/invert-color/","title":"Invert Color","tags":"image invert negative","search":"invert-color image invert negative filter color invert color blend the negative from 0 to 100% invert colors, then blend the result back toward the original anywhere from 0 to 100% with a slider — 50% lands on a calm midtone. transparent pixels are skipped, so ui assets and layered images stay clean, and the saved file keeps the format you loaded."},{"id":"screen-burn","href":"/en/tools/screen-burn/","title":"Burn-in Relief","tags":"oled burn-in display","search":"screen-burn oled burn-in display repair utility burn-in relief loosen retained images with full-screen patterns run a full-screen pattern that drives the subpixels evenly for a set time, aiming to fade image retention on oled and lcd panels. start with 5–10 minutes; for stubborn retention try 30–60 while keeping an eye on temperature. it targets temporary retention — physically dead subpixels cannot be repaired."},{"id":"tsv-json-table-converter","href":"/en/tools/tsv-json-table-converter/","title":"TSV ↔ JSON","tags":"tsv json table","search":"tsv-json-table-converter tsv json table converter tsv ↔ json  convert between tsv and normalized table json. cells containing a tab or a newline are parsed and written as quoted fields, so their values survive intact. rows with too few columns are padded with empty cells up to the widest row, with a warning. every cell stays a string — no type inference."},{"id":"html-csv-table-converter","href":"/en/tools/html-csv-table-converter/","title":"HTML Table ↔ CSV","tags":"html csv table","search":"html-csv-table-converter html csv table converter html table ↔ csv  convert between an html table element and csv by way of normalized table json. merged cells are expanded into a rectangle by repeating the value, with a warning. csv carries no merge information, so converting back to html produces a plain rectangular table. cells containing a comma are preserved as quoted fields."},{"id":"monochrome","href":"/en/tools/monochrome/","title":"Monochrome","tags":"image monochrome black-and-white","search":"monochrome image monochrome black-and-white grayscale filter monochrome tune contrast and brightness convert to grayscale with the ntsc weighted average (0.299×r + 0.587×g + 0.114×b), then adjust contrast and brightness on top. those luminance weights follow human perception, so the result reads more naturally than a plain average. the saved file keeps the format you loaded."},{"id":"html-tsv-table-converter","href":"/en/tools/html-tsv-table-converter/","title":"HTML Table ↔ TSV","tags":"html tsv table","search":"html-tsv-table-converter html tsv table converter html table ↔ tsv  convert between an html table element and tsv by way of normalized table json. merged cells are expanded into a rectangle by repeating the value, with a warning. tsv carries no merge information, so converting back to html produces a plain rectangular table. cells containing a tab are preserved as quoted fields."},{"id":"normal-map","href":"/en/tools/normal-map/","title":"Normal Map","tags":"image normal map 3d","search":"normal-map image normal map 3d texture pbr webgl game normal map derive it from a height map or photo read the light and shade of a height map or photo as slope, and generate a normal map from it. a strength slider sets how pronounced the relief is, and flip y switches to the directx convention (opengl and metal are the default). color photos are converted to luminance first, so high-contrast grayscale gives the cleanest result."},{"id":"html-json-table-converter","href":"/en/tools/html-json-table-converter/","title":"HTML Table ↔ JSON","tags":"html json table","search":"html-json-table-converter html json table rowspan colspan html table ↔ json  convert between an html table element and normalized table json. rowspan and colspan are expanded into a rectangle by repeating the value across every cell they cover, with a warning. only the visible text of each cell is taken, and no script is ever executed. each input may contain exactly one table element."},{"id":"pixelator","href":"/en/tools/pixelator/","title":"Pixelator","tags":"image pixel mosaic","search":"pixelator image pixel mosaic pixelate privacy pixelator apply a mosaic set coarseness on a 1–30 scale; the image is downscaled and blown back up to produce the mosaic. higher values mean larger blocks, and at the maximum the longer side is reduced to about 20 blocks. it suits making faces or text unreadable, and the saved file keeps the format you loaded."},{"id":"markdown-json-table-converter","href":"/en/tools/markdown-json-table-converter/","title":"Markdown Table ↔ JSON","tags":"markdown gfm json","search":"markdown-json-table-converter markdown gfm json table markdown table ↔ json  convert between a gfm markdown table and normalized table json. escaped pipes and br elements are restored to the original cell strings on the way back to json. inline markdown and html are kept as plain cell text and never executed. the input must be a single gfm table — surrounding prose is reported as an error."},{"id":"scramble","href":"/en/tools/scramble/","title":"Image Scramble","tags":"image encryption privacy","search":"scramble image encryption privacy scramble puzzle security image scramble hide it by shuffling tiles split the image into a grid of 2 to 50 tiles per side and shuffle them in an order derived from your password. the same password and the same tile count put it back; get either one wrong and it stays scrambled. around 10–20 is a good starting point — higher values break it up more finely. output is png."},{"id":"seamless-texture","href":"/en/tools/seamless-texture/","title":"Seamless Texture","tags":"image texture seamless","search":"seamless-texture image texture seamless tile pattern seamless texture make it tile without a seam the image is split into four and offset so its outer edges meet in the middle, where the resulting seam is blended away with a mask. top, bottom, left and right then line up, so tiling shows no visible joint. switch between the tiled and single view to check the result; output is png or jpeg."},{"id":"stamp-maker","href":"/en/tools/stamp-maker/","title":"Stamp Maker","tags":"image stamp ink","search":"stamp-maker image stamp ink seal dithering threshold binary stamp maker threshold it into a seal threshold the image down to two tones and finish it like a seal impression. you can choose the ink color, and turning on floyd–steinberg error-diffusion dithering keeps photographic gradation readable with only two colors. output is always png so transparency is preserved."},{"id":"html-markdown-table-converter","href":"/en/tools/html-markdown-table-converter/","title":"HTML Table ↔ Markdown","tags":"html markdown gfm","search":"html-markdown-table-converter html markdown gfm table html table ↔ markdown  convert between an html table element and a gfm markdown table. pipes inside cells are escaped and newlines travel as br elements, so a round trip back to html stays intact. rowspan and colspan are expanded into a rectangle by repeating the value, with a warning. inline markup is kept as plain cell text."},{"id":"steganography","href":"/en/tools/steganography/","title":"Steganography","tags":"image png metadata","search":"steganography image png metadata security steganography steganography tuck a file inside a png embed any file into a png's text chunk and pull it back out with the same tool. not a single pixel changes, so the image looks identical — it only grows by the size of what you hid. there is no encryption, so encrypt sensitive data first. a few megabytes is the practical ceiling."},{"id":"markdown-csv-table-converter","href":"/en/tools/markdown-csv-table-converter/","title":"Markdown Table ↔ CSV","tags":"markdown csv table","search":"markdown-csv-table-converter markdown csv table converter markdown table ↔ csv  convert between a gfm markdown table and csv. cells containing a comma become quoted fields on the csv side, and newlines inside cells become br elements on the markdown side. rows with too few columns are padded with empty cells up to the widest row, with a warning. every cell stays a string."},{"id":"markdown-tsv-table-converter","href":"/en/tools/markdown-tsv-table-converter/","title":"Markdown Table ↔ TSV","tags":"markdown tsv table","search":"markdown-tsv-table-converter markdown tsv table converter markdown table ↔ tsv  convert between a gfm markdown table and tsv. cells containing a tab become quoted fields on the tsv side, and newlines inside cells become br elements on the markdown side. rows with too few columns are padded with empty cells up to the widest row, with a warning. every cell stays a string."},{"id":"csv-tsv-table-converter","href":"/en/tools/csv-tsv-table-converter/","title":"CSV ↔ TSV","tags":"csv tsv table","search":"csv-tsv-table-converter csv tsv table converter csv ↔ tsv  convert between csv and tsv. cells containing a comma or a tab are re-quoted under the target format's rules, and newlines inside cells stay within the quoted field. rows with too few columns are padded with empty cells up to the widest row, with a warning. every cell stays a string — no type inference."}]