1<!DOCTYPE html><html lang="es"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width"><link rel="icon" type="image/png" href="/Markdown-logo.png"><link rel="apple-touch-icon" href="/Markdown-logo.png"><link rel="canonical" href="https://markdown.es/"><link rel="preconnect" href="https://ads.themoneytizer.com" crossorigin><link rel="dns-prefetch" href="https://ads.themoneytizer.com"><meta name="generator" content="Astro v6.0.0"><title>Qué es Markdown y cómo usarlo: guÃa en español - Markdown.es</title><meta name="description" content="Aprende Markdown desde cero: qué es, para qué sirve y toda su sintaxis con ejemplos. GuÃa en español con herramientas gratis para convertir a HTML, PDF o RTF."><!-- 1. THEMONEYTIZER InMobi Choice CMP (Gestor de Consentimiento - debe ir primero) -->
1<script type="text/javascript" async> 2(function() { 3 var host = "www.themoneytizer.com"; 4 var element = document.createElement('script'); 5 var firstScript = document.getElementsByTagName('script')[0]; 6 var url = 'https://cmp.inmobi.com' 7 .concat('/choice/', '6Fv0cGNfc_bw8', '/', host, '/choice.js?tag_version=V3'); 8 var uspTries = 0; 9 var uspTriesLimit = 3; 10 element.async = true; 11 element.type = 'text/javascript'; 12 element.src = url; 13 14 firstScript.parentNode.insertBefore(element, firstScript); 15 16 function makeStub() { 17 var TCF_LOCATOR_NAME = '__tcfapiLocator'; 18 var queue = []; 19 var win = window; 20 var cmpFrame; 21 22 function addFrame() { 23 var doc = win.document; 24 var otherCMP = !!(win.frames[TCF_LOCATOR_NAME]); 25 26 if (!otherCMP) { 27 if (doc.body) { 28 var iframe = doc.createElement('iframe'); 29 30 iframe.style.cssText = 'display:none'; 31 iframe.name = TCF_LOCATOR_NAME; 32 doc.body.appendChild(iframe); 33 } else { 34 setTimeout(addFrame, 5); 35 } 36 } 37 return !otherCMP; 38 } 39 40 function tcfAPIHandler() { 41 var gdprApplies; 42 var args = arguments; 43 44 if (!args.length) { 45 return queue; 46 } else if (args[0] === 'setGdprApplies') { 47 if ( 48 args.length > 3 && 49 args[2] === 2 && 50 typeof args[3] === 'boolean' 51 ) { 52 gdprApplies = args[3]; 53 if (typeof args[2] === 'function') { 54 args[2]('set', true); 55 } 56 } 57 } else if (args[0] === 'ping') { 58 var retr = { 59 gdprApplies: gdprApplies, 60 cmpLoaded: false, 61 cmpStatus: 'stub' 62 }; 63 64 if (typeof args[2] === 'function') { 65 args[2](retr); 66 } 67 } else { 68 if(args[0] === 'init' && typeof args[3] === 'object') { 69 args[3] = Object.assign(args[3], { tag_version: 'V3' }); 70 } 71 queue.push(args); 72 } 73 } 74 75 function postMessageEventHandler(event) { 76 var msgIsString = typeof event.data === 'string'; 77 var json = {}; 78 79 try { 80 if (msgIsString) { 81 json = JSON.parse(event.data); 82 } else { 83 json = event.data; 84 } 85 } catch (ignore) {} 86 87 var payload = json.__tcfapiCall; 88 89 if (payload) { 90 window.__tcfapi( 91 payload.command, 92 payload.version, 93 function(retValue, success) { 94 var returnMsg = { 95 __tcfapiReturn: { 96 returnValue: retValue, 97 success: success, 98 callId: payload.callId 99 } 100 }; 101 if (msgIsString) { 102 returnMsg = JSON.stringify(returnMsg); 103 } 104 if (event && event.source && event.source.postMessage) { 105 event.source.postMessage(returnMsg, '*'); 106 } 107 }, 108 payload.parameter 109 ); 110 } 111 } 112 113 while (win) { 114 try { 115 if (win.frames[TCF_LOCATOR_NAME]) { 116 cmpFrame = win; 117 break; 118 } 119 } catch (ignore) {} 120 121 if (win === window.top) { 122 break; 123 } 124 win = win.parent; 125 } 126 if (!cmpFrame) { 127 addFrame(); 128 win.__tcfapi = tcfAPIHandler; 129 win.addEventListener('message', postMessageEventHandler, false); 130 } 131 }; 132 133 makeStub(); 134 135 var uspStubFunction = function() { 136 var arg = arguments; 137 if (typeof window.__uspapi !== uspStubFunction) { 138 setTimeout(function() { 139 if (typeof window.__uspapi !== 'undefined') { 140 window.__uspapi.apply(window.__uspapi, arg); 141 } 142 }, 500); 143 } 144 }; 145 146 var checkIfUspIsReady = function() { 147 uspTries++; 148 if (window.__uspapi === uspStubFunction && uspTries < uspTriesLimit) { 149 console.warn('USP is not accessible'); 150 } else { 151 clearInterval(uspInterval); 152 } 153 }; 154 155 if (typeof window.__uspapi === 'undefined') { 156 window.__uspapi = uspStubFunction; 157 var uspInterval = setInterval(checkIfUspIsReady, 6000); 158 } 159})(); 160</script>
160 <!-- 2. Google Consent Mode v2 (después del CMP) -->
160<script> 161 window.dataLayer = window.dataLayer || []; 162 function gtag(){dataLayer.push(arguments);} 163 gtag('consent', 'default', { 164 'ad_storage': 'denied', 165 'ad_user_data': 'denied', 166 'ad_personalization': 'denied', 167 'analytics_storage': 'denied', 168 'wait_for_update': 3000 169 }); 170</script>
170 <!-- 3. GA4 -->
vendor: 63 bytes, line 170
170<script async src="https://www.googletagmanager.com/gtag/js?id=
170G-GG343T2DY8
vendor: 12 bytes, line 170
170"></script>
170<script> 171 gtag('js', new Date()); 172 gtag('config', 'G-GG343T2DY8'); 173</script>
173 <!-- 4. AdSense -->
173<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
173
173<script> 174 (adsbygoogle = window.adsbygoogle || []).push({ 175 google_ad_client: "ca-pub-1602196224032955", 176 enable_page_level_ads: true 177 }); 178</script>
178 <!-- 5. Publisuites --><meta name="publisuites-verify-code" content="aHR0cHM6Ly9tYXJrZG93bi5lcw=="><link rel="stylesheet" href="/_astro/Layout.Bsp3KVRM.css"></head> <body class="min-h-screen flex flex-col bg-slate-50 text-slate-900 font-sans selection:bg-blue-200 selection:text-blue-900"> <header class="w-full border-b border-slate-200/50 bg-white/80 backdrop-blur-md sticky top-0 z-50 transition-all"> <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2 group"> <img src="/Markdown-logo.png" alt="Markdown.es Logo" width="32" height="32" loading="eager" class="h-8 w-8 object-contain group-hover:scale-105 transition-transform duration-300"> <span class="font-bold text-xl tracking-tight text-slate-900">Markdown<span class="text-slate-400 font-light">.es</span></span> </a> <!-- Mobile Menu Button --> <div class="md:hidden flex items-center"> <button id="mobile-menu-button" class="text-slate-600 hover:text-slate-900 focus:outline-none p-2 bg-slate-100 rounded-lg" aria-label="Abrir menú"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" id="menu-icon-open" class="lucide lucide-menu w-6 h-6"> <path d="M4 5h16"></path> <path d="M4 12h16"></path> <path d="M4 19h16"></path> </svg> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" id="menu-icon-close" class="lucide lucide-x w-6 h-6 hidden"> <path d="M18 6 6 18"></path> <path d="m6 6 12 12"></path> </svg> </button> </div> <!-- Desktop nav --> <nav class="hidden md:flex items-center gap-6"> <a href="/" class="text-sm font-medium transition-colors hover:text-blue-600 text-blue-600">Inicio</a> <a href="/sintaxis-markdown" class="text-sm font-medium transition-colors hover:text-blue-600 text-slate-600">Sintaxis</a> <a href="/multimarkdown" class="text-sm font-medium transition-colors hover:text-blue-600 text-slate-600">MultiMarkdown</a> <a href="/aplicaciones-markdown" class="text-sm font-medium transition-colors hover:text-blue-600 text-slate-600">Aplicaciones</a> <!-- Herramientas: enlace + desplegable. El <a> sigue siendo un enlace real 179 a /herramientas, para no perder el rastreo ni el acceso por teclado; 180 el menu se abre al pasar el raton o al enfocar. --> <div class="relative group"> <a href="/herramientas" aria-haspopup="true" class="inline-flex items-center gap-1 text-sm font-medium transition-colors hover:text-blue-600 text-slate-600"> 181Herramientas 182<svg class="w-3.5 h-3.5 transition-transform group-hover:rotate-180" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg> </a> <div class="invisible opacity-0 group-hover:visible group-hover:opacity-100 group-focus-within:visible group-focus-within:opacity-100 transition-all duration-150 absolute left-1/2 -translate-x-1/2 top-full pt-3 z-50"> <div class="w-[44rem] max-w-[calc(100vw-2rem)] p-4 bg-white border border-slate-200 rounded-[1.5rem] shadow-2xl shadow-slate-900/10"> <div class="grid grid-cols-3 gap-x-5 gap-y-1"> <div> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-2 px-2">Conversión de Documentos</p> <ul class="flex flex-col"> <li> <a href="/herramientas/markdown-a-html" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-code-xml w-4 h-4 shrink-0 text-blue-600"> <path d="m18 16 4-4-4-4"></path> <path d="m6 8-4 4 4 4"></path> <path d="m14.5 4-5 16"></path> </svg> <span class="truncate">Markdown â HTML</span> </a> </li><li> <a href="/herramientas/html-a-markdown" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-code w-4 h-4 shrink-0 text-orange-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M10 12.5 8 15l2 2.5"></path> <path d="m14 12.5 2 2.5-2 2.5"></path> </svg> <span class="truncate">HTML â Markdown</span> </a> </li><li> <a href="/herramientas/markdown-a-pdf" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-down w-4 h-4 shrink-0 text-red-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M12 18v-6"></path> <path d="m9 15 3 3 3-3"></path> </svg> <span class="truncate">Markdown â PDF</span> </a> </li><li> <a href="/herramientas/pdf-a-markdown" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-up w-4 h-4 shrink-0 text-red-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M12 12v6"></path> <path d="m15 15-3-3-3 3"></path> </svg> <span class="truncate">PDF â Markdown</span> </a> </li><li> <a href="/herramientas/imagen-a-markdown" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-scan-text w-4 h-4 shrink-0 text-violet-600"> <path d="M3 7V5a2 2 0 0 1 2-2h2"></path> <path d="M17 3h2a2 2 0 0 1 2 2v2"></path> <path d="M21 17v2a2 2 0 0 1-2 2h-2"></path> <path d="M7 21H5a2 2 0 0 1-2-2v-2"></path> <path d="M7 8h8"></path> <path d="M7 12h10"></path> <path d="M7 16h6"></path> </svg> <span class="truncate">Imagen â Markdown</span> </a> </li><li> <a href="/herramientas/markdown-a-word" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-type-corner w-4 h-4 shrink-0 text-blue-600"> <path d="M12 22h6a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v6"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M3 16v-1.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5V16"></path> <path d="M6 22h2"></path> <path d="M7 14v8"></path> </svg> <span class="truncate">Markdown â Word</span> </a> </li><li> <a href="/herramientas/word-a-markdown" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-input w-4 h-4 shrink-0 text-indigo-600"> <path d="M4 11V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-1"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M2 15h10"></path> <path d="m9 18 3-3-3-3"></path> </svg> <span class="truncate">Word â Markdown</span> </a> </li><li> <a href="/herramientas/markdown-a-texto-enriquecido" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-clipboard-type w-4 h-4 shrink-0 text-indigo-600"> <rect width="8" height="4" x="8" y="2" rx="1" ry="1"></rect> <path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path> <path d="M9 12v-1h6v1"></path> <path d="M11 17h2"></path> <path d="M12 11v6"></path> </svg> <span class="truncate">Markdown â Texto rico</span> </a> </li><li> <a href="/herramientas/texto-enriquecido-a-markdown" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-text w-4 h-4 shrink-0 text-emerald-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M10 9H8"></path> <path d="M16 13H8"></path> <path d="M16 17H8"></path> </svg> <span class="truncate">Texto rico â Markdown</span> </a> </li> </ul> </div><div> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-2 px-2">Herramientas de Tablas</p> <ul class="flex flex-col"> <li> <a href="/herramientas/generador-de-tablas" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-table-2 w-4 h-4 shrink-0 text-emerald-600"> <path d="M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18"></path> </svg> <span class="truncate">Generador de tablas</span> </a> </li><li> <a href="/herramientas/csv-a-tabla-markdown" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-grid-3x3 w-4 h-4 shrink-0 text-green-600"> <rect width="18" height="18" x="3" y="3" rx="2"></rect> <path d="M3 9h18"></path> <path d="M3 15h18"></path> <path d="M9 3v18"></path> <path d="M15 3v18"></path> </svg> <span class="truncate">CSV â Tabla</span> </a> </li><li> <a href="/herramientas/excel-a-markdown" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-spreadsheet w-4 h-4 shrink-0 text-green-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M8 13h2"></path> <path d="M14 13h2"></path> <path d="M8 17h2"></path> <path d="M14 17h2"></path> </svg> <span class="truncate">Excel â Tabla</span> </a> </li><li> <a href="/herramientas/tabla-markdown-a-html" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-table-properties w-4 h-4 shrink-0 text-teal-600"> <path d="M15 3v18"></path> <rect width="18" height="18" x="3" y="3" rx="2"></rect> <path d="M21 9H3"></path> <path d="M21 15H3"></path> </svg> <span class="truncate">Tabla â HTML</span> </a> </li> </ul> </div><div> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-2 px-2">Visualización y Análisis</p> <ul class="flex flex-col"> <li> <a href="/herramientas/previsualizador" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-eye w-4 h-4 shrink-0 text-purple-600"> <path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path> <circle cx="12" cy="12" r="3"></circle> </svg> <span class="truncate">Previsualizador</span> </a> </li><li> <a href="/herramientas/markdown-a-mapa-mental" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-brain w-4 h-4 shrink-0 text-indigo-600"> <path d="M12 18V5"></path> <path d="M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4"></path> <path d="M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5"></path> <path d="M17.997 5.125a4 4 0 0 1 2.526 5.77"></path> <path d="M18 18a4 4 0 0 0 2-7.464"></path> <path d="M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517"></path> <path d="M6 18a4 4 0 0 1-2-7.464"></path> <path d="M6.003 5.125a4 4 0 0 0-2.526 5.77"></path> </svg> <span class="truncate">Mapa mental</span> </a> </li><li> <a href="/herramientas/json-a-markdown" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-braces w-4 h-4 shrink-0 text-amber-600"> <path d="M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1"></path> <path d="M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1"></path> </svg> <span class="truncate">JSON â Markdown</span> </a> </li> </ul> </div> </div> <a href="/herramientas" class="mt-3 flex items-center justify-center gap-2 px-4 py-2.5 bg-slate-900 text-white text-sm font-bold rounded-xl hover:bg-slate-800 transition-colors no-u
182nderline"> 183Ver todas las herramientas â 184</a> </div> </div> </div> <!-- Utilidades: mismo patron que Herramientas, seccion aparte. Solo 185 aparece cuando hay al menos una utilidad publicada. --> <div class="relative group"> <a href="/utilidades" aria-haspopup="true" class="inline-flex items-center gap-1 text-sm font-medium transition-colors hover:text-emerald-600 text-slate-600"> 186Utilidades 187<svg class="w-3.5 h-3.5 transition-transform group-hover:rotate-180" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg> </a> <div class="invisible opacity-0 group-hover:visible group-hover:opacity-100 group-focus-within:visible group-focus-within:opacity-100 transition-all duration-150 absolute right-0 top-full pt-3 z-50"> <div class="w-[52rem] max-w-[calc(100vw-2rem)] p-4 bg-white border border-slate-200 rounded-[1.5rem] shadow-2xl shadow-slate-900/10"> <div class="grid grid-cols-3 gap-x-5 gap-y-3"> <div> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-2 px-2">Herramientas PDF</p> <ul class="flex flex-col"> <li> <a href="/utilidades/unir-pdf" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-combine w-4 h-4 shrink-0 text-red-600"> <path d="M14 3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1"></path> <path d="M19 3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1"></path> <path d="m7 15 3 3"></path> <path d="m7 21 3-3H5a2 2 0 0 1-2-2v-2"></path> <rect x="14" y="14" width="7" height="7" rx="1"></rect> <rect x="3" y="3" width="7" height="7" rx="1"></rect> </svg> <span class="truncate">Unir PDF</span> </a> </li><li> <a href="/utilidades/dividir-pdf" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-scissors w-4 h-4 shrink-0 text-red-600"> <circle cx="6" cy="6" r="3"></circle> <path d="M8.12 8.12 12 12"></path> <path d="M20 4 8.12 15.88"></path> <circle cx="6" cy="18" r="3"></circle> <path d="M14.8 14.8 20 20"></path> </svg> <span class="truncate">Dividir PDF</span> </a> </li><li> <a href="/utilidades/comprimir-pdf" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-minimize-2 w-4 h-4 shrink-0 text-orange-600"> <path d="m14 10 7-7"></path> <path d="M20 10h-6V4"></path> <path d="m3 21 7-7"></path> <path d="M4 14h6v6"></path> </svg> <span class="truncate">Comprimir PDF</span> </a> </li><li> <a href="/utilidades/eliminar-paginas-pdf" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-x-corner w-4 h-4 shrink-0 text-orange-600"> <path d="M11 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="m15 17 5 5"></path> <path d="m20 17-5 5"></path> </svg> <span class="truncate">Eliminar páginas</span> </a> </li><li> <a href="/utilidades/extraer-paginas-pdf" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-output w-4 h-4 shrink-0 text-orange-600"> <path d="M4.226 20.925A2 2 0 0 0 6 22h12a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v3.127"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="m5 11-3 3"></path> <path d="m5 17-3-3h10"></path> </svg> <span class="truncate">Extraer páginas</span> </a> </li><li> <a href="/utilidades/ordenar-paginas-pdf" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-arrow-down-up w-4 h-4 shrink-0 text-orange-600"> <path d="m3 16 4 4 4-4"></path> <path d="M7 20V4"></path> <path d="m21 8-4-4-4 4"></path> <path d="M17 4v16"></path> </svg> <span class="truncate">Ordenar páginas</span> </a> </li><li> <a href="/utilidades/rotar-pdf" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-rotate-cw w-4 h-4 shrink-0 text-red-600"> <path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path> <path d="M21 3v5h-5"></path> </svg> <span class="truncate">Rotar PDF</span> </a> </li><li> <a href="/utilidades/numerar-paginas-pdf" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-hash w-4 h-4 shrink-0 text-orange-600"> <line x1="4" x2="20" y1="9" y2="9"></line> <line x1="4" x2="20" y1="15" y2="15"></line> <line x1="10" x2="8" y1="3" y2="21"></line> <line x1="16" x2="14" y1="3" y2="21"></line> </svg> <span class="truncate">Numerar páginas</span> </a> </li><li> <a href="/utilidades/marca-de-agua-pdf" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-stamp w-4 h-4 shrink-0 text-orange-600"> <path d="M14 13V8.5C14 7 15 7 15 5a3 3 0 0 0-6 0c0 2 1 2 1 3.5V13"></path> <path d="M20 15.5a2.5 2.5 0 0 0-2.5-2.5h-11A2.5 2.5 0 0 0 4 15.5V17a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1z"></path> <path d="M5 22h14"></path> </svg> <span class="truncate">Marca de agua</span> </a> </li><li>
187 <a href="/utilidades/jpg-a-pdf" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-image-plus w-4 h-4 shrink-0 text-red-600"> <path d="M16 5h6"></path> <path d="M19 2v6"></path> <path d="M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5"></path> <path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path> <circle cx="9" cy="9" r="2"></circle> </svg> <span class="truncate">JPG â PDF</span> </a> </li><li> <a href="/utilidades/pdf-a-jpg" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-image w-4 h-4 shrink-0 text-red-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <circle cx="10" cy="12" r="2"></circle> <path d="m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22"></path> </svg> <span class="truncate">PDF â JPG</span> </a> </li> </ul> </div><div> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-2 px-2">Herramientas de Imagen</p> <ul class="flex flex-col"> <li> <a href="/utilidades/heic-a-jpg" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-smartphone w-4 h-4 shrink-0 text-purple-600"> <rect width="14" height="20" x="5" y="2" rx="2" ry="2"></rect> <path d="M12 18h.01"></path> </svg> <span class="truncate">HEIC â JPG</span> </a> </li><li> <a href="/utilidades/png-a-jpg" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-images w-4 h-4 shrink-0 text-blue-600"> <path d="m22 11-1.296-1.296a2.4 2.4 0 0 0-3.408 0L11 16"></path> <path d="M4 8a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2"></path> <circle cx="13" cy="7" r="1" fill="currentColor"></circle> <rect x="8" y="2" width="14" height="14" rx="2"></rect> </svg> <span class="truncate">PNG â JPG</span> </a> </li><li> <a href="/utilidades/jpg-a-png" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-image w-4 h-4 shrink-0 text-blue-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <circle cx="10" cy="12" r="2"></circle> <path d="m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22"></path> </svg> <span class="truncate">JPG â PNG</span> </a> </li><li> <a href="/utilidades/webp-a-jpg" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-shapes w-4 h-4 shrink-0 text-teal-600"> <path d="M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z"></path> <rect x="3" y="14" width="7" height="7" rx="1"></rect> <circle cx="17.5" cy="17.5" r="3.5"></circle> </svg> <span class="truncate">WebP â JPG</span> </a> </li><li> <a href="/utilidades/comprimir-imagen" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-shrink w-4 h-4 shrink-0 text-emerald-600"> <path d="m15 15 6 6m-6-6v4.8m0-4.8h4.8"></path> <path d="M9 19.8V15m0 0H4.2M9 15l-6 6"></path> <path d="M15 4.2V9m0 0h4.8M15 9l6-6"></path> <path d="M9 4.2V9m0 0H4.2M9 9 3 3"></path> </svg> <span class="truncate">Comprimir imagen</span> </a> </li><li> <a href="/utilidades/redimensionar-imagen" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-expand w-4 h-4 shrink-0 text-green-600"> <path d="m15 15 6 6"></path> <path d="m15 9 6-6"></path> <path d="M21 16v5h-5"></path> <path d="M21 8V3h-5"></path> <path d="M3 16v5h5"></path> <path d="m3 21 6-6"></path> <path d="M3 8V3h5"></path> <path d="M9 9 3 3"></path> </svg> <span class="truncate">Redimensionar</span> </a> </li><li> <a href="/utilidades/svg-a-png" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-shapes w-4 h-4 shrink-0 text-indigo-600"> <path d="M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z"></path> <rect x="3" y="14" width="7" height="7" rx="1"></rect> <circle cx="17.5" cy="17.5" r="3.5"></circle> </svg> <span class="truncate">SVG â PNG</span> </a> </li> </ul> </div><div> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-2 px-2">Texto y Escritura</p> <ul class="flex flex-col"> <li> <a href="/utilidades/contador-de-palabras" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-pilcrow w-4 h-4 shrink-0 text-blue-600"> <path d="M13 4v16"></path> <path d="M17 4v16"></path> <path d="M19 4H9.5a4.5 4.5 0 0 0 0 9H13"></path> </svg> <span class="truncate">Contador de palabras</span> </a> </li><li> <a href="/utilidades/comparar-textos" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-git-compare w-4 h-4 shrink-0 text-purple-600"> <circle cx="18" cy="18" r="3"></circle> <circle cx="6" cy="6" r="3"></circle> <path d="M13 6h3a2 2 0 0 1 2 2v7"></path> <path d="M11 18H8a2 2 0 0 1-2-2V9"></path> </svg> <span class="truncate">Comparar textos</span> </a> </li><li> <a href="/utilidades/convertir-mayusculas-minusculas" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-type w-4 h-4 shrink-0 text-emerald-600"> <path d="M12 4v16"></path> <path d="M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2"></path> <path d="M9 20h6"></path> </svg> <span class="truncate">Mayús. y minús.</span> </a> </li><li> <a href="/utilidades/ordenar-lineas" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-list-ordered w-4 h-4 shrink-0 text-teal-600"> <path d="M11 5h10"></path> <path d="M11 12h10"></path> <path d="M11 19h10"></path> <path d="M4 4h1v5"></path> <path d="M4 9h2"></path> <path d="M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02"></path> </svg> <span class="truncate">Ordenar lÃneas</span> </a> </li><li> <a href="/utilidades/lorem-ipsum" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-scroll-text w-4 h-4 shrink-0 text-amber-600"> <path d="M15 12h-5"></path> <path d="M15 8h-5"></path> <path d="M19 17V5a2 2 0 0 0-2-2H4"></path> <path d="M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3"></path> </svg> <span class="truncate">Lorem ipsum</span> </a> </li><li> <a href="/utilidades/analizador-de-texto" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-baseline w-4 h-4 shrink-0 text-indigo-600"> <path d="M4 20h16"></path> <path d="m6 16 6-12 6 12"></path> <path d="M8 12h8"></path> </svg> <span class="truncate">Analizador de texto</span> </a> </li> </ul> </div><div> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-2 px-2">Codificar y Decodificar</p> <ul class="flex flex-col"> <li> <a href="/utilidades/base64" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-binary w-4 h-4 shrink-0 text-blue-600"> <rect x="14" y="14" width="4" height="6" rx="2"></rect> <rect x="6" y="4" width="4" height="6" rx="2"></rect> <path d="M6 20h4"></path> <path d="M14 10h4"></path> <path d="M6 14h2v6"></path> <path d="M14 4h2v6"></path> </svg> <span class="truncate">Base64 texto</span> </a> </li><li> <a href="/utilidades/base64-imagen" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-image w-4 h-4 shrink-0 text-orange-600"> <rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect> <circle cx="9" cy="9" r="2"></circle> <path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path> </svg> <span class="truncate">Base64 imagen</span> </a> </li><li> <a href="/utilidades/url-encode-decode" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-link-2 w-4 h-4 shrink-0 text-green-600"> <path d="M9 17H7A5 5 0 0 1 7 7h2"></path> <path d="M15 7h2a5 5 0 1 1 0 10h-2"></path> <line x1="8" x2="16" y1="12" y2="12"></line> </svg> <span class="truncate">
187URL encode/decode</span> </a> </li><li> <a href="/utilidades/analizador-de-url" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-unlink w-4 h-4 shrink-0 text-teal-600"> <path d="m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71"></path> <path d="m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71"></path> <line x1="8" x2="8" y1="2" y2="5"></line> <line x1="2" x2="5" y1="8" y2="8"></line> <line x1="16" x2="16" y1="19" y2="22"></line> <line x1="19" x2="22" y1="16" y2="16"></line> </svg> <span class="truncate">Analizador de URL</span> </a> </li><li> <a href="/utilidades/entidades-html" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-code-xml w-4 h-4 shrink-0 text-orange-600"> <path d="m18 16 4-4-4-4"></path> <path d="m6 8-4 4 4 4"></path> <path d="m14.5 4-5 16"></path> </svg> <span class="truncate">Entidades HTML</span> </a> </li><li> <a href="/utilidades/escapar-texto" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-slash w-4 h-4 shrink-0 text-red-600"> <path d="M22 2 2 22"></path> </svg> <span class="truncate">Escapar texto</span> </a> </li><li> <a href="/utilidades/hex-ascii" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-binary w-4 h-4 shrink-0 text-purple-600"> <rect x="14" y="14" width="4" height="6" rx="2"></rect> <rect x="6" y="4" width="4" height="6" rx="2"></rect> <path d="M6 20h4"></path> <path d="M14 10h4"></path> <path d="M6 14h2v6"></path> <path d="M14 4h2v6"></path> </svg> <span class="truncate">Hex â ASCII</span> </a> </li><li> <a href="/utilidades/conversor-bases-numericas" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-brackets w-4 h-4 shrink-0 text-indigo-600"> <path d="M16 3h3a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-3"></path> <path d="M8 21H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h3"></path> </svg> <span class="truncate">Bases numéricas</span> </a> </li> </ul> </div><div> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-2 px-2">Datos y Formatos</p> <ul class="flex flex-col"> <li> <a href="/utilidades/json-formatter" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-braces w-4 h-4 shrink-0 text-amber-600"> <path d="M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1"></path> <path d="M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1"></path> </svg> <span class="truncate">JSON formatter</span> </a> </li><li> <a href="/utilidades/yaml-a-json" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-braces w-4 h-4 shrink-0 text-blue-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1"></path> <path d="M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1"></path> </svg> <span class="truncate">YAML â JSON</span> </a> </li><li> <a href="/utilidades/json-a-yaml" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-braces w-4 h-4 shrink-0 text-emerald-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1"></path> <path d="M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1"></path> </svg> <span class="truncate">JSON â YAML</span> </a> </li><li> <a href="/utilidades/json-a-csv" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-table w-4 h-4 shrink-0 text-green-600"> <path d="M12 3v18"></path> <rect width="18" height="18" x="3" y="3" rx="2"></rect> <path d="M3 9h18"></path> <path d="M3 15h18"></path> </svg> <span class="truncate">JSON â CSV</span> </a> </li><li> <a href="/utilidades/csv-a-json" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-database w-4 h-4 shrink-0 text-teal-600"> <ellipse cx="12" cy="5" rx="9" ry="3"></ellipse> <path d="M3 5V19A9 3 0 0 0 21 19V5"></path> <path d="M3 12A9 3 0 0 0 21 12"></path> </svg> <span class="truncate">CSV â JSON</span> </a> </li><li> <a href="/utilidades/formatear-xml" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-code-corner w-4 h-4 shrink-0 text-orange-600"> <path d="M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="m5 16-3 3 3 3"></path> <path d="m9 22 3-3-3-3"></path> </svg> <span class="truncate">Formatear XML</span> </a> </li><li> <a href="/utilidades/formatear-sql" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-database w-4 h-4 shrink-0 text-indigo-600"> <ellipse cx="12" cy="5" rx="9" ry="3"></ellipse> <path d="M3 5V19A9 3 0 0 0 21 19V5"></path> <path d="M3 12A9 3 0 0 0 21 12"></path> </svg> <span class="truncate">Formatear SQL</span> </a> </li><li> <a href="/utilidades/php-serialize" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-terminal w-4 h-4 shrink-0 text-purple-600"> <path d="M12 19h8"></path> <path d="m4 17 6-6-6-6"></path> </svg> <span class="truncate">PHP serialize</span> </a> </li> </ul> </div><div> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-2 px-2">Código Web</p> <ul class="flex flex-col"> <li> <a href="/utilidades/formatear-html" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-code-xml w-4 h-4 shrink-0 text-orange-600"> <path d="m18 16 4-4-4-4"></path> <path d="m6 8-4 4 4 4"></path> <path d="m14.5 4-5 16"></path> </svg> <span class="truncate">HTML beautify</span> </a> </li><li> <a href="/utilidades/formatear-css" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-palette w-4 h-4 shrink-0 text-blue-600"> <path d="M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z"></path> <circle cx="13.5" cy="6.5" r=".5" fill="currentColor"></circle> <circle cx="17.5" cy="10.5" r=".5" fill="currentColor"></circle> <circle cx="6.5" cy="12.5" r=".5" fill="currentColor"></circle> <circle cx="8.5" cy="7.5" r=".5" fill="currentColor"></circle> </svg> <span class="truncate">CSS beautify</span> </a> </li><li> <a href="/utilidades/formatear-javascript" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-code-corner w-4 h-4 shrink-0 text-amber-600"> <path d="M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="m5 16-3 3 3 3"></path> <path d="m9 22 3-3-3-3"></path> </svg> <span class="truncate">JS beautify</span> </a> </li><li> <a href="/utilidades/html-a-jsx" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-code-xml w-4 h-4 shrink-0 text-teal-600"> <path d="m18 16 4-4-4-4"></path> <path d="m6 8-4 4 4 4"></path> <path d="m14.5 4-5 16"></path> </svg> <span class="truncate">HTML â JSX</span> </a> </li><li> <a href="/utilidades/svg-a-css" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-image w-4 h-4 shrink-0 text-purple-600"> <rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect> <circle cx="9" cy="9" r="2"></circle> <path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path> </svg> <span class="truncate">SVG â CSS</span> </a> </li><li> <a href="/utilidades/previsualizar-html" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-code-xml w-4 h-4 shrink-0 text-green-600"> <path d="m18 16 4-4-4-4"></path> <path d="m6 8-4 4 4 4"></path> <path d="m14.5 4-5 16"></path> </svg> <span class="truncate">Previsualizar HTML</span> </a> </li> </ul> </div><div> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-2 px-2">Desarrollo y Seguridad</p> <ul class="flex flex-col"> <li> <a href="/utilidades/unix-timestamp" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-clock w-4 h-4 shrink-0 text-blue-600"> <path d="M12 6v6l4 2"></path> <circle cx="12" cy="12" r="10"></circle> </svg> <span class="truncate">Unix timestamp</span> </a> </li><li> <a href="/utilidades/jwt-decoder" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-key-round w-4 h-4 shrink-0 text-red-600"> <path d="M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z"></path> <circle cx="16.5" cy="7.5" r=".5" fill="currentColor"></circle> </svg> <span class="truncate">JWT decoder</span> </a> </li><li> <a href="/utilidades/generador-uuid" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-fingerprint-pattern w-4 h-4 shrink-0 text-indigo-600"> <path d="M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4"></path> <path d="M14 13.12c0 2.38 0 6.38-1 8.88"></path> <path d="M17.29 21.02c.12-.6.43-2.3.5-3.02"></path> <path d="M2 12a10 10 0 0 1 18-6"></path> <path d="M2 16h.01"></path> <path d="M21.8 16c.2-2 .131-5.354 0-6"></path> <path d="M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2"></path> <path d="M8.65 22c.21-.66.45-1.32.57-2"></path> <path d="M9 6.8a6 6 0 0 1 9 5.2v2"></path> </svg> <span class="truncate">UUID / ULID</span> </a> </li><li> <a href="/utilidades/regex-tester" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-regex w-4 h-4 shrink-0 text-purple-600"> <path d="M17 3v10"></path> <path d="m12.67 5.5 8.66 5"></path> <path d="m12.67 10.5 8.66-5"></path> <path d="M9 17a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2z"></path> </svg> <span class="truncate">Regex tester</span> </a> </li><li> <a href="/utilidades/generador-hash" class="flex item
187s-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-hash w-4 h-4 shrink-0 text-emerald-600"> <line x1="4" x2="20" y1="9" y2="9"></line> <line x1="4" x2="20" y1="15" y2="15"></line> <line x1="10" x2="8" y1="3" y2="21"></line> <line x1="16" x2="14" y1="3" y2="21"></line> </svg> <span class="truncate">Generador de hash</span> </a> </li><li> <a href="/utilidades/cron-parser" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-calendar-clock w-4 h-4 shrink-0 text-teal-600"> <path d="M16 14v2.2l1.6 1"></path> <path d="M16 2v4"></path> <path d="M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5"></path> <path d="M3 10h5"></path> <path d="M8 2v4"></path> <circle cx="16" cy="16" r="6"></circle> </svg> <span class="truncate">Cron parser</span> </a> </li><li> <a href="/utilidades/certificado-x509" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-shield-check w-4 h-4 shrink-0 text-green-600"> <path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path> <path d="m9 12 2 2 4-4"></path> </svg> <span class="truncate">Certificado X.509</span> </a> </li><li> <a href="/utilidades/generador-contrasenas" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-key-square w-4 h-4 shrink-0 text-red-600"> <path d="M12.4 2.7a2.5 2.5 0 0 1 3.4 0l5.5 5.5a2.5 2.5 0 0 1 0 3.4l-3.7 3.7a2.5 2.5 0 0 1-3.4 0L8.7 9.8a2.5 2.5 0 0 1 0-3.4z"></path> <path d="m14 7 3 3"></path> <path d="m9.4 10.6-6.814 6.814A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814"></path> </svg> <span class="truncate">Contraseñas</span> </a> </li><li> <a href="/utilidades/cadena-aleatoria" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-shuffle w-4 h-4 shrink-0 text-amber-600"> <path d="m18 14 4 4-4 4"></path> <path d="m18 2 4 4-4 4"></path> <path d="M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22"></path> <path d="M2 6h1.972a4 4 0 0 1 3.6 2.2"></path> <path d="M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45"></path> </svg> <span class="truncate">Cadenas aleatorias</span> </a> </li><li> <a href="/utilidades/curl-a-codigo" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-terminal w-4 h-4 shrink-0 text-indigo-600"> <path d="M12 19h8"></path> <path d="m4 17 6-6-6-6"></path> </svg> <span class="truncate">cURL a código</span> </a> </li><li> <a href="/utilidades/codigo-qr" class="flex items-center gap-2 px-2 py-1.5 rounded-lg text-[13px] leading-tight transition-colors hover:bg-slate-100 no-underline text-slate-700"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-qr-code w-4 h-4 shrink-0 text-blue-600"> <rect width="5" height="5" x="3" y="3" rx="1"></rect> <rect width="5" height="5" x="16" y="3" rx="1"></rect> <rect width="5" height="5" x="3" y="16" rx="1"></rect> <path d="M21 16h-3a2 2 0 0 0-2 2v3"></path> <path d="M21 21v.01"></path> <path d="M12 7v3a2 2 0 0 1-2 2H7"></path> <path d="M3 12h.01"></path> <path d="M12 3h.01"></path> <path d="M12 16v.01"></path> <path d="M16 12h1"></path> <path d="M21 12v.01"></path> <path d="M12 21v-1"></path> </svg> <span class="truncate">Código QR</span> </a> </li> </ul> </div> </div> <a href="/utilidades" class="mt-3 flex items-center justify-center gap-2 px-4 py-2.5 bg-slate-900 text-white text-sm font-bold rounded-xl hover:bg-slate-800 transition-colors no-u
187nderline"> 188Ver todas las utilidades â 189</a> </div> </div> </div> <a href="/blog" class="text-sm font-medium transition-colors hover:text-blue-600 text-slate-600">ArtÃculos</a> <a href="/javier-cristobal" class="text-sm font-medium transition-colors hover:text-blue-600 text-slate-600">Sobre mÃ</a> </nav> </div> <div id="mobile-menu" class="hidden md:hidden bg-white border-b border-slate-200 absolute w-full shadow-2xl origin-top transition-all"> <div class="px-6 pt-4 pb-8 flex flex-col gap-4 text-lg"> <a href="/" class="font-medium text-slate-700 hover:text-blue-600">Inicio</a> <a href="/sintaxis-markdown" class="font-medium text-slate-700 hover:text-blue-600">Sintaxis</a> <a href="/multimarkdown" class="font-medium text-slate-700 hover:text-blue-600">MultiMarkdown</a> <a href="/aplicaciones-markdown" class="font-medium text-slate-700 hover:text-blue-600">Aplicaciones</a> <!-- En movil el desplegable seria incomodo, asi que las herramientas van 190 como un bloque desplegado dentro del propio menu. --> <div class="flex flex-col gap-2"> <a href="/herramientas" class="font-medium text-slate-700 hover:text-blue-600">Herramientas</a> <div class="pl-3 border-l-2 border-slate-100 flex flex-col gap-2.5 py-1"> <div class="flex flex-col gap-1"> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest">Conversión de Documentos</p> <a href="/herramientas/markdown-a-html" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-code-xml w-4 h-4 shrink-0 text-blue-600"> <path d="m18 16 4-4-4-4"></path> <path d="m6 8-4 4 4 4"></path> <path d="m14.5 4-5 16"></path> </svg> Markdown â HTML </a><a href="/herramientas/html-a-markdown" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-code w-4 h-4 shrink-0 text-orange-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M10 12.5 8 15l2 2.5"></path> <path d="m14 12.5 2 2.5-2 2.5"></path> </svg> HTML â Markdown </a><a href="/herramientas/markdown-a-pdf" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-down w-4 h-4 shrink-0 text-red-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M12 18v-6"></path> <path d="m9 15 3 3 3-3"></path> </svg> Markdown â PDF </a><a href="/herramientas/pdf-a-markdown" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-up w-4 h-4 shrink-0 text-red-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M12 12v6"></path> <path d="m15 15-3-3-3 3"></path> </svg> PDF â Markdown </a><a href="/herramientas/imagen-a-markdown" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-scan-text w-4 h-4 shrink-0 text-violet-600"> <path d="M3 7V5a2 2 0 0 1 2-2h2"></path> <path d="M17 3h2a2 2 0 0 1 2 2v2"></path> <path d="M21 17v2a2 2 0 0 1-2 2h-2"></path> <path d="M7 21H5a2 2 0 0 1-2-2v-2"></path> <path d="M7 8h8"></path> <path d="M7 12h10"></path> <path d="M7 16h6"></path> </svg> Imagen â Markdown </a><a href="/herramientas/markdown-a-word" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-type-corner w-4 h-4 shrink-0 text-blue-600"> <path d="M12 22h6a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v6"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M3 16v-1.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5V16"></path> <path d="M6 22h2"></path> <path d="M7 14v8"></path> </svg> Markdown â Word </a><a href="/herramientas/word-a-markdown" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-input w-4 h-4 shrink-0 text-indigo-600"> <path d="M4 11V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-1"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M2 15h10"></path> <path d="m9 18 3-3-3-3"></path> </svg> Word â Markdown </a><a href="/herramientas/markdown-a-texto-enriquecido" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-clipboard-type w-4 h-4 shrink-0 text-indigo-600"> <rect width="8" height="4" x="8" y="2" rx="1" ry="1"></rect> <path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path> <path d="M9 12v-1h6v1"></path> <path d="M11 17h2"></path> <path d="M12 11v6"></path> </svg> Markdown â Texto rico </a><a href="/herramientas/texto-enriquecido-a-markdown" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-text w-4 h-4 shrink-0 text-emerald-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M10 9H8"></path> <path d="M16 13H8"></path> <path d="M16 17H8"></path> </svg> Texto rico â Markdown </a> </div><div class="flex flex-col gap-1"> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest">Herramientas de Tablas</p> <a href="/herramientas/generador-de-tablas" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-table-2 w-4 h-4 shrink-0 text-emerald-600"> <path d="M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18"></path> </svg> Generador de tablas </a><a href="/herramientas/csv-a-tabla-markdown" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-grid-3x3 w-4 h-4 shrink-0 text-green-600"> <rect width="18" height="18" x="3" y="3" rx="2"></rect> <path d="M3 9h18"></path> <path d="M3 15h18"></path> <path d="M9 3v18"></path> <path d="M15 3v18"></path> </svg> CSV â Tabla </a><a href="/herramientas/excel-a-markdown" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-spreadsheet w-4 h-4 shrink-0 text-green-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M8 13h2"></path> <path d="M14 13h2"></path> <path d="M8 17h2"></path> <path d="M14 17h2"></path> </svg> Excel â Tabla </a><a href="/herramientas/tabla-markdown-a-html" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-table-properties w-4 h-4 shrink-0 text-teal-600"> <path d="M15 3v18"></path> <rect width="18" height="18" x="3" y="3" rx="2"></rect> <path d="M21 9H3"></path> <path d="M21 15H3"></path> </svg> Tabla â HTML </a> </div><div class="flex flex-col gap-1"> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest">Visualización y Análisis</p> <a href="/herramientas/previsualizador" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-eye w-4 h-4 shrink-0 text-purple-600"> <path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path> <circle cx="12" cy="12" r="3"></circle> </svg> Previsualizador </a><a href="/herramientas/markdown-a-mapa-mental" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-brain w-4 h-4 shrink-0 text-indigo-600"> <path d="M12 18V5"></path> <path d="M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4"></path> <path d="M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5"></path> <path d="M17.997 5.125a4 4 0 0 1 2.526 5.77"></path> <path d="M18 18a4 4 0 0 0 2-7.464"></path> <path d="M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517"></path> <path d="M6 18a4 4 0 0 1-2-7.464"></path> <path d="M6.003 5.125a4 4 0 0 0-2.526 5.77"></path> </svg> Mapa mental </a><a href="/herramientas/json-a-markdown" class="flex items-center gap-2 text-sm text-slate-600 hover:text-blue-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-braces w-4 h-4 shrink-0 text-amber-600"> <path d="M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1"></path> <path d="M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1"></path> </svg> JSON â Markdown </a> </div> </div> </div> <div class="flex flex-col gap-2"> <a href="/utilidades" class="font-medium text-slate-700 hover:text-emerald-600">Utilidades</a> <div class="pl-3 border-l-2 border-slate-100 flex flex-col gap-2.5 py-1"> <div class="flex flex-col gap-1"> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest">Herramientas PDF</p> <a href="/utilidades/unir-pdf" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-combine w-4 h-4 shrink-0 text-red-600"> <path d="M14 3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1"></path> <path d="M19 3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1"></path> <path d="m7 15 3 3"></path> <path d="m7 21 3-3H5a2 2 0 0 1-2-2v-2"></path> <rect x="14" y="14" width="7" height="7" rx="1"></rect> <rect x="3" y="3" width="7" height="7" rx="1"></rect> </svg> Unir PDF </a><a href="/utilidades/dividir-pdf" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-scissors w-4 h-4 shrink-0 text-red-600"> <circle cx="6" cy="6" r="3"></circle> <path d="M8.12 8.12 12 12"></path> <path d="M20 4 8.12 15.88"></path> <circle cx="6" cy="18" r="3"></circle> <path d="M14.8 14.8 20 20"></path> </svg> Dividir PDF </a><a href="/utilidades/comprimir-pdf" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-minimize-2 w-4 h-4 shrink-0 text-orange-600"> <path d="m14 10 7-7"></path> <path d="M20 10h-6V4"></path> <path d="m3 21 7-7"></path> <path d="M4 14h6v6"></path> </svg> Comprimir PDF </a><a href="/utilidades/eliminar-paginas-pdf" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-x-corner w-4 h-4 shrink-0 text-orange-600"> <path d="M11 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="m15 17 5 5"></path> <path d="m20 17-5 5"></path> </svg> Eliminar páginas </a><a href="/utilidades/extraer-paginas-pdf" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-output w-4 h-4 shrink-0 text-orange-600"> <path d="M4.226 20.925A2 2 0 0 0 6 22h12a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v3.127"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="m5 11-3 3"></path> <path d="m5 17-3-3h10"></path> </svg> Extraer páginas </a><a href="/utilidades/ordenar-paginas-pdf" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-arrow-down-up w-4 h-4 shrink-0 text-orange-600"> <path d="m3 16 4 4 4-4"></path> <path d="M7 20V4"></path> <path d="m21 8-4-4-4 4"></path> <path d="M17 4v16"></path> </svg> Ordenar páginas </a><a href="/utilidades/rotar-pdf" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-rotate-cw w-4 h-4 shrink-0 text-red-600"> <path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path> <path d="M21 3v5h-5"></path> </svg> Rotar PDF </a><a href="/utilidades/numerar-paginas-pdf" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="curren
190tColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-hash w-4 h-4 shrink-0 text-orange-600"> <line x1="4" x2="20" y1="9" y2="9"></line> <line x1="4" x2="20" y1="15" y2="15"></line> <line x1="10" x2="8" y1="3" y2="21"></line> <line x1="16" x2="14" y1="3" y2="21"></line> </svg> Numerar páginas </a><a href="/utilidades/marca-de-agua-pdf" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-stamp w-4 h-4 shrink-0 text-orange-600"> <path d="M14 13V8.5C14 7 15 7 15 5a3 3 0 0 0-6 0c0 2 1 2 1 3.5V13"></path> <path d="M20 15.5a2.5 2.5 0 0 0-2.5-2.5h-11A2.5 2.5 0 0 0 4 15.5V17a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1z"></path> <path d="M5 22h14"></path> </svg> Marca de agua </a><a href="/utilidades/jpg-a-pdf" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-image-plus w-4 h-4 shrink-0 text-red-600"> <path d="M16 5h6"></path> <path d="M19 2v6"></path> <path d="M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5"></path> <path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path> <circle cx="9" cy="9" r="2"></circle> </svg> JPG â PDF </a><a href="/utilidades/pdf-a-jpg" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-image w-4 h-4 shrink-0 text-red-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <circle cx="10" cy="12" r="2"></circle> <path d="m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22"></path> </svg> PDF â JPG </a> </div><div class="flex flex-col gap-1"> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest">Herramientas de Imagen</p> <a href="/utilidades/heic-a-jpg" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-smartphone w-4 h-4 shrink-0 text-purple-600"> <rect width="14" height="20" x="5" y="2" rx="2" ry="2"></rect> <path d="M12 18h.01"></path> </svg> HEIC â JPG </a><a href="/utilidades/png-a-jpg" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-images w-4 h-4 shrink-0 text-blue-600"> <path d="m22 11-1.296-1.296a2.4 2.4 0 0 0-3.408 0L11 16"></path> <path d="M4 8a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2"></path> <circle cx="13" cy="7" r="1" fill="currentColor"></circle> <rect x="8" y="2" width="14" height="14" rx="2"></rect> </svg> PNG â JPG </a><a href="/utilidades/jpg-a-png" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-image w-4 h-4 shrink-0 text-blue-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <circle cx="10" cy="12" r="2"></circle> <path d="m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22"></path> </svg> JPG â PNG </a><a href="/utilidades/webp-a-jpg" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-shapes w-4 h-4 shrink-0 text-teal-600"> <path d="M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z"></path> <rect x="3" y="14" width="7" height="7" rx="1"></rect> <circle cx="17.5" cy="17.5" r="3.5"></circle> </svg> WebP â JPG </a><a href="/utilidades/comprimir-imagen" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-shrink w-4 h-4 shrink-0 text-emerald-600"> <path d="m15 15 6 6m-6-6v4.8m0-4.8h4.8"></path> <path d="M9 19.8V15m0 0H4.2M9 15l-6 6"></path> <path d="M15 4.2V9m0 0h4.8M15 9l6-6"></path> <path d="M9 4.2V9m0 0H4.2M9 9 3 3"></path> </svg> Comprimir imagen </a><a href="/utilidades/redimensionar-imagen" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-expand w-4 h-4 shrink-0 text-green-600"> <path d="m15 15 6 6"></path> <path d="m15 9 6-6"></path> <path d="M21 16v5h-5"></path> <path d="M21 8V3h-5"></path> <path d="M3 16v5h5"></path> <path d="m3 21 6-6"></path> <path d="M3 8V3h5"></path> <path d="M9 9 3 3"></path> </svg> Redimensionar </a><a href="/utilidades/svg-a-png" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-shapes w-4 h-4 shrink-0 text-indigo-600"> <path d="M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z"></path> <rect x="3" y="14" width="7" height="7" rx="1"></rect> <circle cx="17.5" cy="17.5" r="3.5"></circle> </svg> SVG â PNG </a> </div><div class="flex flex-col gap-1"> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest">Texto y Escritura</p> <a href="/utilidades/contador-de-palabras" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-pilcrow w-4 h-4 shrink-0 text-blue-600"> <path d="M13 4v16"></path> <path d="M17 4v16"></path> <path d="M19 4H9.5a4.5 4.5 0 0 0 0 9H13"></path> </svg> Contador de palabras </a><a href="/utilidades/comparar-textos" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-git-compare w-4 h-4 shrink-0 text-purple-600"> <circle cx="18" cy="18" r="3"></circle> <circle cx="6" cy="6" r="3"></circle> <path d="M13 6h3a2 2 0 0 1 2 2v7"></path> <path d="M11 18H8a2 2 0 0 1-2-2V9"></path> </svg> Comparar textos </a><a href="/utilidades/convertir-mayusculas-minusculas" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-type w-4 h-4 shrink-0 text-emerald-600"> <path d="M12 4v16"></path> <path d="M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2"></path> <path d="M9 20h6"></path> </svg> Mayús. y minús. </a><a href="/utilidades/ordenar-lineas" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-list-ordered w-4 h-4 shrink-0 text-teal-600"> <path d="M11 5h10"></path> <path d="M11 12h10"></path> <path d="M11 19h10"></path> <path d="M4 4h1v5"></path> <path d="M4 9h2"></path> <path d="M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02"></path> </svg> Ordenar lÃneas </a><a href="/utilidades/lorem-ipsum" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-scroll-text w-4 h-4 shrink-0 text-amber-600"> <path d="M15 12h-5"></path> <path d="M15 8h-5"></path> <path d="M19 17V5a2 2 0 0 0-2-2H4"></path> <path d="M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3"></path> </svg> Lorem ipsum </a><a href="/utilidades/analizador-de-texto" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-baseline w-4 h-4 shrink-0 text-indigo-600"> <path d="M4 20h16"></path> <path d="m6 16 6-12 6 12"></path> <path d="M8 12h8"></path> </svg> Analizador de texto </a> </div><div class="flex flex-col gap-1"> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest">Codificar y Decodificar</p> <a href="/utilidades/base64" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-binary w-4 h-4 shrink-0 text-blue-600"> <rect x="14" y="14" width="4" height="6" rx="2"></rect> <rect x="6" y="4" width="4" height="6" rx="2"></rect> <path d="M6 20h4"></path> <path d="M14 10h4"></path> <path d="M6 14h2v6"></path> <path d="M14 4h2v6"></path> </svg> Base64 texto </a><a href="/utilidades/base64-imagen" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-image w-4 h-4 shrink-0 text-orange-600"> <rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect> <circle cx="9" cy="9" r="2"></circle> <path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path> </svg> Base64 imagen </a><a href="/utilidades/url-encode-decode" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-link-2 w-4 h-4 shrink-0 text-green-600"> <path d="M9 17H7A5 5 0 0 1 7 7h2"></path> <path d="M15 7h2a5 5 0 1 1 0 10h-2"></path> <line x1="8" x2="16" y1="12" y2="12"></line> </svg> URL encode/decode </a><a href="/utilidades/analizador-de-url" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-unlink w-4 h-4 shrink-0 text-teal-600"> <path d="m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71"></path> <path d="m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71"></path> <line x1="8" x2="8" y1="2" y2="5"></line> <line x1="2" x2="5" y1="8" y2="8"></line> <line x1="16" x2="16" y1="19" y2="22"></line>
190 <line x1="19" x2="22" y1="16" y2="16"></line> </svg> Analizador de URL </a><a href="/utilidades/entidades-html" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-code-xml w-4 h-4 shrink-0 text-orange-600"> <path d="m18 16 4-4-4-4"></path> <path d="m6 8-4 4 4 4"></path> <path d="m14.5 4-5 16"></path> </svg> Entidades HTML </a><a href="/utilidades/escapar-texto" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-slash w-4 h-4 shrink-0 text-red-600"> <path d="M22 2 2 22"></path> </svg> Escapar texto </a><a href="/utilidades/hex-ascii" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-binary w-4 h-4 shrink-0 text-purple-600"> <rect x="14" y="14" width="4" height="6" rx="2"></rect> <rect x="6" y="4" width="4" height="6" rx="2"></rect> <path d="M6 20h4"></path> <path d="M14 10h4"></path> <path d="M6 14h2v6"></path> <path d="M14 4h2v6"></path> </svg> Hex â ASCII </a><a href="/utilidades/conversor-bases-numericas" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-brackets w-4 h-4 shrink-0 text-indigo-600"> <path d="M16 3h3a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-3"></path> <path d="M8 21H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h3"></path> </svg> Bases numéricas </a> </div><div class="flex flex-col gap-1"> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest">Datos y Formatos</p> <a href="/utilidades/json-formatter" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-braces w-4 h-4 shrink-0 text-amber-600"> <path d="M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1"></path> <path d="M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1"></path> </svg> JSON formatter </a><a href="/utilidades/yaml-a-json" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-braces w-4 h-4 shrink-0 text-blue-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1"></path> <path d="M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1"></path> </svg> YAML â JSON </a><a href="/utilidades/json-a-yaml" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-braces w-4 h-4 shrink-0 text-emerald-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1"></path> <path d="M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1"></path> </svg> JSON â YAML </a><a href="/utilidades/json-a-csv" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-table w-4 h-4 shrink-0 text-green-600"> <path d="M12 3v18"></path> <rect width="18" height="18" x="3" y="3" rx="2"></rect> <path d="M3 9h18"></path> <path d="M3 15h18"></path> </svg> JSON â CSV </a><a href="/utilidades/csv-a-json" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-database w-4 h-4 shrink-0 text-teal-600"> <ellipse cx="12" cy="5" rx="9" ry="3"></ellipse> <path d="M3 5V19A9 3 0 0 0 21 19V5"></path> <path d="M3 12A9 3 0 0 0 21 12"></path> </svg> CSV â JSON </a><a href="/utilidades/formatear-xml" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-code-corner w-4 h-4 shrink-0 text-orange-600"> <path d="M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="m5 16-3 3 3 3"></path> <path d="m9 22 3-3-3-3"></path> </svg> Formatear XML </a><a href="/utilidades/formatear-sql" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-database w-4 h-4 shrink-0 text-indigo-600"> <ellipse cx="12" cy="5" rx="9" ry="3"></ellipse> <path d="M3 5V19A9 3 0 0 0 21 19V5"></path> <path d="M3 12A9 3 0 0 0 21 12"></path> </svg> Formatear SQL </a><a href="/utilidades/php-serialize" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-terminal w-4 h-4 shrink-0 text-purple-600"> <path d="M12 19h8"></path> <path d="m4 17 6-6-6-6"></path> </svg> PHP serialize </a> </div><div class="flex flex-col gap-1"> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest">Código Web</p> <a href="/utilidades/formatear-html" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-code-xml w-4 h-4 shrink-0 text-orange-600"> <path d="m18 16 4-4-4-4"></path> <path d="m6 8-4 4 4 4"></path> <path d="m14.5 4-5 16"></path> </svg> HTML beautify </a><a href="/utilidades/formatear-css" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-palette w-4 h-4 shrink-0 text-blue-600"> <path d="M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z"></path> <circle cx="13.5" cy="6.5" r=".5" fill="currentColor"></circle> <circle cx="17.5" cy="10.5" r=".5" fill="currentColor"></circle> <circle cx="6.5" cy="12.5" r=".5" fill="currentColor"></circle> <circle cx="8.5" cy="7.5" r=".5" fill="currentColor"></circle> </svg> CSS beautify </a><a href="/utilidades/formatear-javascript" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-code-corner w-4 h-4 shrink-0 text-amber-600"> <path d="M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="m5 16-3 3 3 3"></path> <path d="m9 22 3-3-3-3"></path> </svg> JS beautify </a><a href="/utilidades/html-a-jsx" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-code-xml w-4 h-4 shrink-0 text-teal-600"> <path d="m18 16 4-4-4-4"></path> <path d="m6 8-4 4 4 4"></path> <path d="m14.5 4-5 16"></path> </svg> HTML â JSX </a><a href="/utilidades/svg-a-css" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-image w-4 h-4 shrink-0 text-purple-600"> <rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect> <circle cx="9" cy="9" r="2"></circle> <path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path> </svg> SVG â CSS </a><a href="/utilidades/previsualizar-html" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-code-xml w-4 h-4 shrink-0 text-green-600"> <path d="m18 16 4-4-4-4"></path> <path d="m6 8-4 4 4 4"></path> <path d="m14.5 4-5 16"></path> </svg> Previsualizar HTML </a> </div><div class="flex flex-col gap-1"> <p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest">Desarrollo y Seguridad</p> <a href="/utilidades/unix-timestamp" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-clock w-4 h-4 shrink-0 text-blue-600"> <path d="M12 6v6l4 2"></path> <circle cx="12" cy="12" r="10"></circle> </svg> Unix timestamp </a><a href="/utilidades/jwt-decoder" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-key-round w-4 h-4 shrink-0 text-red-600"> <path d="M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z"></path> <circle cx="16.5" cy="7.5" r=".5" fill="currentColor"></circle> </svg> JWT decoder </a><a href="/utilidades/generador-uuid" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-fingerprint-pattern w-4 h-4 shrink-0 text-indigo-600"> <path d="M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4"></path> <path d="M14 13.12c0 2.38 0 6.38-1 8.88"></path> <path d="M17.29 21.02c.12-.6.43-2.3.5-3.02"></path> <path d="M2 12a10 10 0 0 1 18-6"></path> <path d="M2 16h.01"></path> <path d="M21.8 16c.2-2 .131-5.354 0-6"></path> <path d="M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2"></path> <path d="M8.65 22c.21-.66.45-1.32.57-2"></path> <path d="M9 6.8a6 6 0 0 1 9 5.2v2"></path> </svg> UUID / ULID </a><a href="/utilidades/regex-tester" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-regex w-4 h-4 shrink-0 text-purple-600"> <path d="M17 3v10"></path> <path d="m12.67 5.5 8.66 5"></path> <path d="m12.67 10.5 8.66-5"></path> <path d="M9 17a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2z"></path> </svg> Regex tester </a><a href="/utilidades/generador-hash" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-hash w-4 h-4 shrink-0 text-emerald-600"> <line x1="4" x2="20" y1="9" y2="9"></line> <line x1="4" x2="20" y1="15" y2="15"></line> <line x1="10" x2="8" y1="3" y2="21"></line> <line x1="16" x2="14" y1="3" y2="21"></line> </svg> Generador de hash </a><a href="/utilidades/cron-parser" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-calendar-clock w-4 h-4 shrink-0 text-teal-600"> <path d="M16 14v2.2l1.6 1"></path> <path d="M16 2v4"></path> <path d="M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5"></path> <path d="M3 10h5"></path> <path d="M8 2v4"></path> <circle cx="16" cy="16" r="6"></circle> </svg> Cron parser </a><a href="/utilidades/certificado-x509" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-shield-check w-4 h-4 shrink-0 text-green-600"> <path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path> <path d="m9 12 2 2 4-4"></path> </svg> Certificado X.509 </a><a href="/utilidades/generador-contrasenas" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-key-square w-4 h-4 shrink-0 text-red-600"> <path d="M12.4 2.7a2.5 2.5 0 0 1 3.4 0l5.5 5.5a2.5 2.5 0 0 1 0 3.4l-3.7 3.7a2.5 2.5 0 0 1-3.4 0L8.7 9.8a2.5 2.5 0 0 1 0-3.4z"></path> <path d="m14 7 3 3"></path> <path d="m9.4 10.6-6.814 6.814A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814"></path> </svg> Contraseñas </a>
190<a href="/utilidades/cadena-aleatoria" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-shuffle w-4 h-4 shrink-0 text-amber-600"> <path d="m18 14 4 4-4 4"></path> <path d="m18 2 4 4-4 4"></path> <path d="M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22"></path> <path d="M2 6h1.972a4 4 0 0 1 3.6 2.2"></path> <path d="M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45"></path> </svg> Cadenas aleatorias </a><a href="/utilidades/curl-a-codigo" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-terminal w-4 h-4 shrink-0 text-indigo-600"> <path d="M12 19h8"></path> <path d="m4 17 6-6-6-6"></path> </svg> cURL a código </a><a href="/utilidades/codigo-qr" class="flex items-center gap-2 text-sm text-slate-600 hover:text-emerald-600 no-underline"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-qr-code w-4 h-4 shrink-0 text-blue-600"> <rect width="5" height="5" x="3" y="3" rx="1"></rect> <rect width="5" height="5" x="16" y="3" rx="1"></rect> <rect width="5" height="5" x="3" y="16" rx="1"></rect> <path d="M21 16h-3a2 2 0 0 0-2 2v3"></path> <path d="M21 21v.01"></path> <path d="M12 7v3a2 2 0 0 1-2 2H7"></path> <path d="M3 12h.01"></path> <path d="M12 3h.01"></path> <path d="M12 16v.01"></path> <path d="M16 12h1"></path> <path d="M21 12v.01"></path> <path d="M12 21v-1"></path> </svg> Código QR </a> </div> </div> </div> <a href="/blog" class="font-medium text-slate-700 hover:text-blue-600">ArtÃculos</a> <a href="/javier-cristobal" class="font-medium text-slate-700 hover:text-blue-600">Sobre mÃ</a> </div> </div> </header>
190<script type="module">const e=document.getElementById("mobile-menu-button"),n=document.getElementById("mobile-menu"),t=document.getElementById("menu-icon-open"),o=document.getElementById("menu-icon-close");e&&n&&t&&o&&e.addEventListener("click",()=>{n.classList.toggle("hidden"),t.classList.toggle("hidden"),o.classList.toggle("hidden")});</script>
190 <!-- Pegado justo bajo el header (h-16), con z menor que el suyo para que el 191 desplegable de Herramientas siga cayendo por encima de esta barra. --> 192<div class="w-full border-b border-slate-200/70 bg-white/85 backdrop-blur-md sticky top-16 z-40"><div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-2.5"><div id="site-search" class="relative max-w-2xl mx-auto" data-open="false"><div class="relative"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-search w-4 h-4 absolute left-3.5 top-1/2 -translate-y-1/2 text-slate-400 pointer-events-none"> <path d="m21 21-4.34-4.34"></path> <circle cx="11" cy="11" r="8"></circle> </svg><input type="text" id="site-search-input" role="combobox" aria-expanded="false" aria-controls="site-search-results" aria-autocomplete="list" aria-label="Buscar herramientas, utilidades y guÃas" autocomplete="off" placeholder="Buscar herramienta, utilidad o guÃaâ¦" class="w-full pl-10 pr-20 py-2 bg-white border border-slate-200 rounded-full text-sm text-slate-800 placeholder:text-slate-400 shadow-sm focus:outline-none focus:border-blue-400 focus:ring-4 focus:ring-blue-100 transition-all"><!-- Atajo de teclado. Comparte sitio con la "x" de limpiar: se esconde 193 en cuanto hay texto escrito. --><kbd id="site-search-kbd" class="hidden sm:flex absolute right-3 top-1/2 -translate-y-1/2 items-center gap-0.5 px-1.5 py-0.5 text-[10px] font-sans font-semibold text-slate-400 bg-slate-100 border border-slate-200 rounded pointer-events-none"><span class="text-[11px] leading-none">/</span></kbd><button type="button" id="site-search-clear" aria-label="Limpiar búsqueda" class="hidden absolute right-3 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-700 transition-colors"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></div><!-- Panel de resultados y sugerencias --><div id="site-search-panel" class="hidden absolute left-0 right-0 top-full mt-2 bg-white border border-slate-200 rounded-2xl shadow-2xl shadow-slate-900/10 overflow-hidden z-50"><!-- Estado vacio: pistas de lo que se puede buscar --><div id="site-search-tips" class="p-4"><p class="text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-2.5">Prueba a buscar</p><div class="flex flex-wrap gap-1.5"><button type="button" data-tip="pdf" class="px-2.5 py-1 text-xs font-medium text-slate-600 bg-slate-100 hover:bg-blue-50 hover:text-blue-700 border border-transparent hover:border-blue-200 rounded-full transition-colors">PDF</button><button type="button" data-tip="json" class="px-2.5 py-1 text-xs font-medium text-slate-600 bg-slate-100 hover:bg-blue-50 hover:text-blue-700 border border-transparent hover:border-blue-200 rounded-full transition-colors">JSON</button><button type="button" data-tip="tabla" class="px-2.5 py-1 text-xs font-medium text-slate-600 bg-slate-100 hover:bg-blue-50 hover:text-blue-700 border border-transparent hover:border-blue-200 rounded-full transition-colors">Tablas</button><button type="button" data-tip="word" class="px-2.5 py-1 text-xs font-medium text-slate-600 bg-slate-100 hover:bg-blue-50 hover:text-blue-700 border border-transparent hover:border-blue-200 rounded-full transition-colors">Word</button><button type="button" data-tip="comprimir imagen" class="px-2.5 py-1 text-xs font-medium text-slate-600 bg-slate-100 hover:bg-blue-50 hover:text-blue-700 border border-transparent hover:border-blue-200 rounded-full transition-colors">Comprimir imagen</button><button type="button" data-tip="base64" class="px-2.5 py-1 text-xs font-medium text-slate-600 bg-slate-100 hover:bg-blue-50 hover:text-blue-700 border border-transparent hover:border-blue-200 rounded-full transition-colors">Base64</button><button type="button" data-tip="contar palabras" class="px-2.5 py-1 text-xs font-medium text-slate-600 bg-slate-100 hover:bg-blue-50 hover:text-blue-700 border border-transparent hover:border-blue-200 rounded-full transition-colors">Contar palabras</button><button type="button" data-tip="sintaxis" class="px-2.5 py-1 text-xs font-medium text-slate-600 bg-slate-100 hover:bg-blue-50 hover:text-blue-700 border border-transparent hover:border-blue-200 rounded-full transition-colors">Sintaxis</button></div><p class="text-xs text-slate-400 mt-3">100 páginas: conversores de Markdown, utilidades de PDF e imagen, formateadores de código y las guÃas de sintaxis. 194</p></div><ul id="site-search-results" role="listbox" class="hidden max-h-[22rem] overflow-y-auto py-1.5"></ul><div id="site-search-empty" class="hidden px-4 py-6 text-center"><p class="text-sm text-slate-500">Nada coincide con <span id="site-search-empty-q" class="font-semibold text-slate-700"></span>.</p><p class="text-xs text-slate-400 mt-1.5"> 195Mira el <a href="/herramientas" class="text-blue-600 hover:underline">Ãndice de herramientas</a> o el de <a href="/utilidades" class="text-blue-600 hover:underline">utilidades</a>. 196</p></div></div></div></div></div> 197
198<script>(function(){const INDEX = [{"t":"Markdown â HTML","u":"/herramientas/markdown-a-html","d":"Convierte a código HTML limpio en tiempo real.","s":"herramienta","kw":"md html renderizar compilar etiquetas web","p":true},{"t":"HTML â Markdown","u":"/herramientas/html-a-markdown","d":"Limpia código HTML y lo convierte a Markdown portable.","s":"herramienta","kw":"html md limpiar scraping pegar web","p":false},{"t":"Markdown â PDF","u":"/herramientas/markdown-a-pdf","d":"Exporta a PDF listo para imprimir o compartir.","s":"herramienta","kw":"md pdf imprimir exportar documento","p":false},{"t":"PDF â Markdown","u":"/herramientas/pdf-a-markdown","d":"Extrae el texto de un PDF sin subirlo a ningún servidor.","s":"herramienta","kw":"pdf md extraer texto ocr documento","p":false},{"t":"Imagen â Markdown (OCR)","u":"/herramientas/imagen-a-markdown","d":"Lee el texto de una captura o foto con OCR, sin salir de tu navegador.","s":"herramienta","kw":"ocr captura foto screenshot imagen texto reconocer png jpg","p":false},{"t":"Markdown â Word","u":"/herramientas/markdown-a-word","d":"Descarga un .docx real con estilos nativos de Word.","s":"herramienta","kw":"md word docx office microsoft doc","p":false},{"t":"Word â Markdown","u":"/herramientas/word-a-markdown","d":"Convierte .docx conservando encabezados, listas y tablas.","s":"herramienta","kw":"word docx md office microsoft doc importar","p":false},{"t":"Markdown â Texto Enriquecido","u":"/herramientas/markdown-a-texto-enriquecido","d":"Exporta RTF manteniendo formato de Word o correos.","s":"herramienta","kw":"rtf texto rico word correo email pegar formato","p":false},{"t":"Texto Enriquecido â Markdown","u":"/herramientas/texto-enriquecido-a-markdown","d":"Pega de
198sde Word o Pages y obtén Markdown instantáneo.","s":"herramienta","kw":"rtf texto rico pegar word pages copiar formato","p":false},{"t":"Generador Visual de Tablas","u":"/herramientas/generador-de-tablas","d":"Editor tipo hoja de cálculo, sin escribir barras verticales.","s":"herramienta","kw":"tabla crear editor hoja calculo celdas pipes barras","p":true},{"t":"CSV â Tabla Markdown","u":"/herramientas/csv-a-tabla-markdown","d":"Pega tu CSV y obtén la tabla Markdown al instante.","s":"herramienta","kw":"csv tabla comas excel importar datos","p":false},{"t":"Excel â Tabla Markdown","u":"/herramientas/excel-a-markdown","d":"Sube el .xlsx o pega las celdas desde Excel o Sheets.","s":"herramienta","kw":"excel xlsx tabla hoja calculo sheets celdas datos","p":false},{"t":"Tabla Markdown â HTML","u":"/herramientas/tabla-markdown-a-html","d":"Solo la tabla, con Bootstrap, Tailwind o CSS embebido.","s":"herramienta","kw":"tabla html bootstrap tailwind css table","p":false},{"t":"Previsualizador Markdown","u":"/herramientas/previsualizador","d":"Renderiza Markdown con estilos tipográficos pulidos.","s":"herramienta","kw":"preview ver render vista previa editor escribir probar","p":false},{"t":"Markdown â Mapa Mental","u":"/herramientas/markdown-a-mapa-mental","d":"Mapa mental interactivo descargable como PNG o SVG.","s":"herramienta","kw":"mapa mental mindmap esquema markmap diagrama","p":false},{"t":"JSON â Markdown","u":"/herramientas/json-a-markdown","d":"Documenta JSON como tablas, listas o esquema de tipos.","s":"herramienta","kw":"json md api documentar tabla esquema","p":false},{"t":"Unir PDF","u":"/utilidades/unir-pdf","d":"Combina varios PDF en uno y ordena las páginas a tu gusto.","s":"utilidad","kw":"unir juntar combinar merge fusionar pdf varios","p":true},{"t":"Dividir PDF","u":"/utilidades/dividir-pdf","d":"Separa un PDF por rangos de páginas o extrae páginas sueltas.","s":"utilidad","kw":"dividir separar split partir cortar pdf","p":false},{"t":"Comprimir PDF","u":"/utilidades/comprimir-pdf","d":"Reduce el pe
198so de un PDF sin destrozar la calidad.","s":"utilidad","kw":"comprimir reducir peso tamano adelgazar optimizar pdf mb","p":false},{"t":"Eliminar páginas de un PDF","u":"/utilidades/eliminar-paginas-pdf","d":"Quita las páginas que no necesitas y descarga el PDF limpio.","s":"utilidad","kw":"eliminar borrar quitar paginas pdf","p":false},{"t":"Extraer páginas de un PDF","u":"/utilidades/extraer-paginas-pdf","d":"Quédate solo con las páginas que te interesan de un documento largo.","s":"utilidad","kw":"extraer sacar separar paginas pdf","p":false},{"t":"Ordenar páginas de un PDF","u":"/utilidades/ordenar-paginas-pdf","d":"Reorganiza, mueve o duplica las páginas de un PDF a tu gusto.","s":"utilidad","kw":"ordenar reordenar mover organizar paginas pdf","p":false},{"t":"Rotar PDF","u":"/utilidades/rotar-pdf","d":"Endereza las páginas torcidas de un escaneo, todas o solo algunas.","s":"utilidad","kw":"rotar girar enderezar escaneo torcido pdf grados","p":false},{"t":"Numerar páginas de un PDF","u":"/utilidades/numerar-paginas-pdf","d":"Añade números de página eligiendo posición, formato y desde dónde empiezan.","s":"utilidad","kw":"numerar numeros paginacion foliar paginas pdf","p":false},{"t":"Marca de agua en PDF","u":"/utilidades/marca-de-agua-pdf","d":"Marca un documento como borrador, copia o confidencial antes de enviarlo.","s":"utilidad","kw":"marca agua
198watermark borrador confidencial sello pdf","p":false},{"t":"JPG a PDF","u":"/utilidades/jpg-a-pdf","d":"Convierte tus imágenes en un único PDF, en el orden que elijas.","s":"utilidad","kw":"jpg jpeg png imagen foto a pdf convertir varias","p":false},{"t":"PDF a JPG","u":"/utilidades/pdf-a-jpg","d":"Convierte cada página de un PDF en una imagen JPG o PNG.","s":"utilidad","kw":"pdf jpg jpeg png imagen convertir paginas capturar","p":false},{"t":"HEIC a JPG","u":"/utilidades/heic-a-jpg","d":"Convierte las fotos HEIC del iPhone al JPG de toda la vida.","s":"utilidad","kw":"heic jpg iphone ios apple foto convertir abrir","p":false},{"t":"PNG a JPG","u":"/utilidades/png-a-jpg","d":"Pasa PNG a JPG eligiendo el color de fondo y la calidad.","s":"utilidad","kw":"png jpg jpeg convertir fondo transparencia","p":false},{"t":"JPG a PNG","u":"/utilidades/jpg-a-png","d":"Convierte JPG a PNG sin pérdida, listo para editar.","s":"utilidad","kw":"jpg jpeg png convertir transparencia sin perdida","p":false},{"t":"WebP a JPG","u":"/utilidades/webp-a-jpg","d":"Convierte imágenes WebP a JPG compatible con cualquier programa.","s":"utilidad","kw":"webp jpg jpeg google convertir abrir descargada","p":false},{"t":"Comprimir imagen","u":"/utilidades/comprimir-imagen","d":"Baja el peso de tus JPG y PNG ajustando la calidad en vivo.","s":"utilidad","kw":"comprimir reducir peso optimizar imagen foto jpg png kb tinypng","p":true},{"t":"Redimensionar imagen","u":"/utilidades/redimensionar-imagen","d":"Cambia el tamaño en pÃxeles o porcentaje manteniendo la proporción.","s":"utilidad","kw":"redimensionar resize escalar tamano pixeles ancho alto imagen","p":false},{"t":"SVG a PNG","u":"/utilidades/svg-a-png","d":"Rasteriza un SVG a PNG en la resolución que necesites.","s":"utilidad","kw":"svg png vector rasterizar exportar logo icono","p":false},{"t":"Contador de Palabras y Caracteres","u":"/utilidades/contador-de-palabras","d":"Palabras, caracteres, frases y tiempo de lectura en tiempo real.","s":"utilidad","kw":"contar palabras caracteres letras tiempo lectura twitter limite","p":true},{"t":"Comparar Textos (Diff)","u":"/utilidades/comparar-textos","d":"Encuentra las diferencias entre dos textos, lÃnea a lÃnea o palabra a palabra.","s":"utilidad","kw":"comparar diff diferencias cambios dos textos git","p":false},{"t":"Convertir Mayúsculas y Minúsculas","u":"/utilidades/convertir-mayusculas-minusculas","d":"MAYÃSCULAS, minúsculas, Tipo TÃtulo, camelCase, snake_case y más.","s":"utilidad","kw":"mayusculas minusculas capitalizar camelcase snakecase kebab slug titulo","p":false},{"t":"Ordenar y Eliminar LÃneas Duplicadas","u":"/utilidades/ordenar-lineas","d":"Ordena alfabética o numéricamente y quita las lÃneas repetidas.","s":"utilidad","kw":"ordenar alfabeticamente duplicados repetidos lineas lista limpiar","p":false},{"t":"Generador de Lorem Ipsum","u":"/utilidades/lorem-ipsum","d":"Texto de relleno en párrafos, frases o palabras, clásico o en español.","s":"utilidad","kw":"lorem ipsum relleno placeholder texto falso dummy maqueta","p":false},{"t":"Analizador de Texto","u":"/utilidades/analizador-de-texto","d":"Frecuencia de palabras, longitudes, códigos de carácter y caracteres invisibles.","s":"utilidad","kw":"analizar frecuencia palabras caracteres invisibles unicode estadisticas","p":false},{"t":"Base64 Encode y Decode","u":"/utilidades/base64","d":"Codifica y decodifica texto en Base64, con soporte UTF-8 y URL-safe.","s":"utilidad","kw":"base64 codificar decodificar encode decode texto cifrar","p":true},{"t":"Base64 a Imagen y Imagen a Base64","u":"/utilidades/base64-imagen","d":"Convierte imágenes a data URI y recupera la imagen desde Base64.","s":"utilidad","kw":"base64 imagen data uri foto png jpg embebida inline","p":false},{"t":"URL Encode y Decode","u":"/utilidades/url-encode-decode","d":"Codifica y decodifica URLs y parámetros con porcentaje.","s":"utilidad","kw":"url encode decode codificar porcentaje parametros querystring","p":false},{"t":"Analizador de URL","u":"/utilidades/analizador-de-url","d":"Desglosa protocolo, dominio, ruta y parámetros de cualquier URL.","s":"utilidad","kw":"url analizar desglosar parametros dominio query utm","p":false},{"t":"Entidades HTML","u":"/utilidades/entidades-html","d":"Escapa y desescapa sÃmbolos y tildes a entidades HTML.","s":"utilidad","kw":"entidades html escapar ampersand tildes simbolos
198nbsp","p":false},{"t":"Escapar y Desescapar Texto","u":"/utilidades/escapar-texto","d":"Escapa comillas y saltos de lÃnea para JSON, JavaScript, SQL o CSV.","s":"utilidad","kw":"escapar comillas json javascript sql csv saltos backslash","p":false},{"t":"Hex a ASCII y ASCII a Hex","u":"/utilidades/hex-ascii","d":"Convierte texto a hexadecimal y hexadecimal a texto legible.","s":"utilidad","kw":"hex hexadecimal ascii texto convertir bytes","p":false},{"t":"Conversor de Bases Numéricas","u":"/utilidades/conversor-bases-numericas","d":"Binario, octal, decimal y hexadecimal, en cualquier dirección.","s":"utilidad","kw":"binario octal decimal hexadecimal base convertir numeros bits","p":false},{"t":"Formatear y Validar JSON","u":"/utilidades/json-formatter","d":"Formatea, valida y minifica JSON con errores señalados por lÃnea.","s":"utilidad","kw":"json formatear validar indentar minificar pretty print embellecer","p":true},{"t":"YAML a JSON","u":"/utilidades/yaml-a-json","d":"Convierte YAML a JSON válido directamente en el navegador.","s":"utilidad","kw":"yaml yml json convertir configuracion","p":false},{"t":"JSON a YAML","u":"/utilidades/json-a-yaml","d":"Convierte JSON a YAML legible, ideal para ficheros de configuración.","s":"utilidad","kw":"json yaml yml convertir configuracion docker","p":false},{"t":"JSON a CSV","u":"/utilidades/json-a-csv","d":"Convierte un array de objetos JSON en CSV listo para Excel.","s":"utilidad","kw":"json csv excel tabla exportar array","p":false},{"t":"CSV a JSON","u":"/utilidades/csv-a-json","d":"Convierte CSV en un array de objetos JSON, con tipos automáticos.","s":"utilidad","kw":"csv json convertir array objetos importar","p":false},{"t":"Formatear XML","u":"/utilidades/formatear-xml","d":"Indenta, valida y minifica XML con detección de errores.","s":"utilidad","kw":"xml formatear indentar validar minificar rss","p":true},{"t":"Formatear SQL","u":"/utilidades/formatear-sql","d":"Indenta consultas SQL largas y las deja legibles al instante.","s":"utilidad","kw":"sql formatear indentar consulta query legible mysql postgres","p":true},{"t":"PHP Serialize y Unserialize","u":"/utilidades/php-serialize","d":"Convierte entre JSON y el formato serializado de PHP.","s":"utilidad","kw":"php serialize unserialize wordpress json array","p":false},{"t":"Formatear y Minificar HTML","u":"/utilidades/formatear-html","d":"Indenta HTML desordenado o lo minifica para producción.","s":"utilidad","kw":"html formatear indentar minificar beautify limpiar","p":true},{"t":"Formatear y Minificar CSS","u":"/utilidades/formatear-css","d":"Ordena e indenta CSS, o lo comprime quitando espacios y comentarios.","s":"utilidad","kw":"css formatear indentar minificar beautify comprimir","p":true},{"t":"Formatear y Minificar JavaScript","u":"/utilidades/formatear-javascript","d":"Indenta y minifica JavaScript, incluido código de una sola lÃnea.","s":"utilidad","kw":"javascript js formatear indentar minificar beautify desminificar","p":true},{"t":"HTML a JSX","u":"/utilidades/html-a-jsx","d":"Convierte HTML a JSX de React: class, for, style y etiquetas cerradas.","s":"utilidad","kw":"html jsx react convertir className componente","p":false},{"t":"SVG a CSS","u":"/utilidades/svg-a-css","d":"Convierte un SVG en data URI listo para background-image.","s":"utilidad","kw":"svg css data uri background image icono fondo","p":false},{"t":"Previsualizar HTML","u":"/utilidades/previsualizar-html","d":"Escribe HTML y ve el resultado renderizado al momento.","s":"utilidad","kw":"html previsualizar probar ver render editor live","p":false},{"t":"Conversor de Unix Timestamp","u":"/utilidades/unix-timestamp","d":"Convierte epoch a fecha legible y al revés, con zonas horarias.","s":"utilidad","kw":"unix timestamp epoch fecha hora segundos milisegundos convertir","p":false},{"t":"Decodificar JWT","u":"/utilidades/jwt-decoder","d":"Inspecciona cabecera, payload y caducidad de un token JWT.","s":"utilidad","kw":"jwt token bearer decodificar payload claims auth caducidad","p":false},{"t":"Generador de UUID y ULID","u":"/utilidades/generador-uuid","d":"Genera identificadores únicos v4 y ULID en lote, listos para copiar.","s":"utilidad","kw":"uuid guid ulid identificador aleatorio v4 unico id","p":false},{"t":"Probar Expresiones Regulares","u":"/utilidades/regex-tester","d":"Prueba tus regex con coincidencias resaltadas y grupos de captura.","s":"utilidad","kw":"regex expresion regular probar test coincidencias grupos patron","p":false},{"t":"Generador de Hash","u":"/utilidades/generador-hash","d":"Calcula SHA-1, SHA-256, SHA-384 y SHA
198-512 de cualquier texto.","s":"utilidad","kw":"hash sha1 sha256 sha512 checksum resumen huella md5","p":false},{"t":"Interpretar Expresión Cron","u":"/utilidades/cron-parser","d":"Traduce una expresión cron a lenguaje natural y sus próximas ejecuciones.","s":"utilidad","kw":"cron crontab expresion programar tarea horario interpretar","p":false},{"t":"Decodificar Certificado X.509","u":"/utilidades/certificado-x509","d":"Lee emisor, fechas y dominios de un certificado PEM.","s":"utilidad","kw":"certificado x509 pem ssl tls caducidad emisor dominio https","p":false},{"t":"Generador de Contraseñas","u":"/utilidades/generador-contrasenas","d":"Contraseñas seguras y aleatorias con opciones de longitud y sÃmbolos.","s":"utilidad","kw":"contrasena password segura aleatoria generar clave fuerte","p":false},{"t":"Generador de Cadenas Aleatorias","u":"/utilidades/cadena-aleatoria","d":"Cadenas al azar con el alfabeto y la longitud que necesites.","s":"utilidad","kw":"cadena aleatoria random string token generar alfabeto","p":false},{"t":"cURL a Código","u":"/utilidades/curl-a-codigo","d":"Convierte un comando cURL en fetch, Python requests o Node.","s":"utilidad","kw":"curl fetch python requests node axios convertir peticion http api","p":false},{"t":"Generador y Lector de QR","u":"/utilidades/codigo-qr","d":"Crea códigos QR descargables y lee el contenido de una imagen QR.","s":"utilidad","kw":"qr codigo generar leer escanear url wifi descargar","p":false},{"t":"Encabezados","u":"/sintaxis-markdown/encabezados","d":"Los seis niveles de tÃtulo con # y la sintaxis alternativa subrayada.","s":"sintaxis","kw":"titulo h1 h2 h3 almohadilla hash cabecera"},{"t":"Saltos de lÃnea","u":"/sintaxis-markdown/saltos-de-linea","d":"Separar párrafos y forzar un salto dentro del mismo párrafo.","s":"sintaxis","kw":"salto linea parrafo enter br espacios retorno"},{"t":"Listas","u":"/sintaxis-markdown/listas","d":"Listas ordenadas, desordenadas y anidadas sin romper la numeración.","s":"sintaxis","kw":"lista vinetas numerada ordenada anidada bullet guion"},{"t":"Citas","u":"/sintaxis-markdown/citas","d":"Bloques de cita con >, citas anidadas y citas de varios párrafos.","s":"sintaxis","kw":"cita blockquote mayor que comilla"},{"t":"Bloques de código","u":"/sintaxis-markdown/bloques-de-codigo","d":"Vallas de triple acento grave y resaltado de sintaxis por lenguaje.","s":"sintaxis","kw":"codigo bloque fence backticks acentos graves resaltado lenguaje"},{"t":"LÃneas horizontales","u":"/sintaxis-markdown/lineas-horizontales","d":"Separadores con ***, --- o ___ y cuándo se confunden con un encabezado.","s":"sintaxis","kw":"linea horizontal separador regla hr guiones"},{"t":"Negrita y cursiva","u":"/sintaxis-markdown/negrita-y-cursiva","d":"Ãnfasis con asteriscos o guiones bajos, y por qué a veces no se aplica.","s":"sintaxis","kw":"negrita cursiva bold italic asterisco guion bajo enfasis"},{"t":"Subrayado","u":"/sintaxis-markdown/subrayado","d":"Markdown no lo tiene: cómo subrayar con HTML y por qué casi nunca conviene.","s":"sintaxis","kw":"subrayar underline u html"},{"t":"Enlaces","u":"/sintaxis-markdown/enlaces","d":"Enlaces en lÃnea, de referencia, automáticos y anclas internas.","s":"sintaxis","kw":"enlace link url hipervinculo corchetes ancla"},{"t":"Imágenes","u":"/sintaxis-markdown/imagenes","d":"Insertar imágenes, texto alternativo, tamaño y hacerlas clicables.","s":"sintaxis","kw":"imagen foto img insertar alt exclamacion"},{"t":"Código en lÃnea","u":"/sintaxis-markdown/codigo-en-linea","d":"Marcar código dentro de un párrafo y escapar acentos graves.","s":"sintaxis","kw":"codigo inline backtick acento grave monospace"},{"t":"Escapar caracteres","u":"/sintaxis-markdown/escapar-caracteres","d":"Mostrar *, _ o # literalmente sin que Markdown los interprete.","s":"sintaxis","kw":"escapar barra invertida backslash literal asterisco simbolo"},{"t":"Tablas","u":"/sintaxis-markdown/tablas","d":"Crear tablas, alinear columnas y qué hacer cuando el contenido es largo.","s":"sintaxis","kw":"tabla pipes barras columnas alinear celdas"},{"t":"Casillas de verificación","u":"/sintaxis-markdown/casillas-de-verificacion","d":"Listas de tareas con [ ] y [x], interactivas en GitHub y Obsidian.","s":"sintaxis","kw":"checkbox tarea todo lista comprobacion marcar"},{"t":"Tachado","u":"/sintaxis-markdown/tachado","d":"Texto tachado con doble virgulilla y su soporte real por plataforma.","s":"sintaxis","kw":"tachado strikethrough virgulilla tilde barrado"},{"t":"Abreviaciones","u":"/multimarkdown/abreviaciones","d":"Definir siglas una vez y que se expliquen solas al pasar el ratón.","s":"multimarkdown","kw":"abreviatura abbr siglas acronimo"},{"t":"Listas de definiciones","u":"/multimarkdown/listas-de-definiciones","d":"Glosarios con término y descripción, la etiqueta <dl> de HTML.","s":"multimarkdown","kw":"definicion glosario termino dl dt dd"},{"t":"Notas al pie","u":"/multimarkdown/notas-al-pie","d":"Referencias numeradas al final del documento, con enlace de ida y vuelta.","s":"multimarkdown","kw":"nota pie footnote referencia asterisco"},{"t":"Metadatos","u":"/multimarkdown/metadatos","d":"TÃtulo, autor y fecha del documento sin que salgan en el contenido.","s":"multimarkdown","kw":"metadatos frontmatter yaml cabecera titulo autor"},{"t":"Referencias cruzadas","u":"/multimarkdown/referencias-cruzadas","d":"Enlazar a una sección concreta con un identificador propio.","s":"multimarkdown","kw":"referencia cruzada ancla enlace interno seccion"},{"t":"Sintaxis de Markdown","u":"/sintaxis-markdown","d":"La chuleta completa: cada elemento con su ejemplo y su resultado.","s":"pagina","kw":"sintaxis chuleta cheatsheet guia manual aprender basico resumen tutorial"},{"t":"MultiMarkdown","u":"/multimarkdown","d":"Lo que MultiMarkdown añade al Markdown original.","s":"pagina","kw":"multimarkdown mmd extendida avanzada academico"},{"t":"Aplicaciones Markdown","u":"/aplicaciones-markdown","d":"Editores y apps comparados por plataforma, uso y precio.","s":"pagina","kw":"aplicaciones apps editores programas obsidian notion typora bear mac windows linux ios android comparativa mejor"},{"t":"Herramientas Markdown","u":"/herramientas","d":"Los conversores de Markdown del sitio, todos en un indice.","s":"pagina","kw":"herramientas conversores convert
198ir indice todas"},{"t":"Utilidades","u":"/utilidades","d":"Conversores y generadores de proposito general, en tu navegador.","s":"pagina","kw":"utilidades herramientas online gratis indice todas"},{"t":"Articulos","u":"/blog","d":"Guias y articulos sobre Markdown y escritura tecnica.","s":"pagina","kw":"blog articulos posts guias noticias leer"},{"t":"Que es un archivo .md","u":"/archivo-md","d":"Que es un fichero .md, como se abre y con que programas.","s":"pagina","kw":"md archivo fichero extension abrir que es formato"}]; 199const ETIQUETAS = {"herramienta":"Herramienta","utilidad":"Utilidad","sintaxis":"Sintaxis","multimarkdown":"MultiMarkdown","pagina":"Página"}; 200 201 (function () { 202 const root = document.getElementById('site-search'); 203 const input = document.getElementById('site-search-input'); 204 const panel = document.getElementById('site-search-panel'); 205 const tips = document.getElementById('site-search-tips'); 206 const results = document.getElementById('site-search-results'); 207 const vacio = document.getElementById('site-search-empty'); 208 const vacioQ = document.getElementById('site-search-empty-q'); 209 const clear = document.getElementById('site-search-clear'); 210 const kbd = document.getElementById('site-search-kbd'); 211 if (!root || !input || !panel || !results) return; 212 213 const COLORES = { 214 herramienta: 'bg-blue-50 text-blue-700', 215 utilidad: 'bg-emerald-50 text-emerald-700', 216 sintaxis: 'bg-purple-50 text-purple-700', 217 multimarkdown: 'bg-indigo-50 text-indigo-700', 218 pagina: 'bg-slate-100 text-slate-600', 219 }; 220 221 /** Sin tildes y en minusculas: "jpeg" y "mayúsculas" deben encontrarse igual. */ 222 const norm = (s) => 223 s.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, ''); 224 225 // El indice se normaliza una sola vez al cargar, no en cada pulsacion. 226 const ENTRIES = INDEX.map((e) => ({ 227 ...e, 228 _t: norm(e.t), 229 _d: norm(e.d), 230 _kw: norm(e.kw || ''), 231 })); 232 233 const escRe = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); 234 235 /** 236 * Puntuacion de una entrada para una consulta. Cada palabra de la consulta 237 * tiene que aparecer en algun campo (AND), asi que "comprimir imagen" no 238 * devuelve todos los "comprimir": lo que la gente espera al seguir 239 * escribiendo es que la lista se estreche. 240 * 241 * En los alias se exige que la palabra empiece en frontera: si no, buscar 242 * "word" saca el generador de contrasenas, porque "password" lo contiene. 243 */ 244 function puntuar(entry, palabras) { 245 let total = 0; 246 for (const p of palabras) { 247 const pe = escRe(p); 248 const frontera = new RegExp('\\b' + pe); 249 let mejor = 0; 250 if (entry._t.startsWith(p)) mejor = 100; 251 // En una entrada principal, tener el termino en el titulo cuenta igual 252 // que tenerlo al principio. Si no, "JSON a CSV" (empieza por "json") 253 // adelanta a "Formatear y Validar JSON" para la busqueda "json", que no 254 // es lo que nadie espera. Solo iguala el nivel: no inventa puntos donde 255 // no hay coincidencia. 256 else if (frontera.test(entry._t)) mejor = entry.p ? 100 : 70; 257 else if (entry._t.includes(p)) mejor = 45; 258 else if (frontera.test(entry._kw)) mejor = 30; 259 else if (frontera.test(entry._d)) mejor = 15; 260 else if (entry._d.includes(p)) mejor = 8; 261 if (mejor === 0) return 0; 262 total += mejor; 263 } 264 // A igualdad de nivel, la principal primero, y luego el titulo mas corto: 265 // es el resultado mas directo. 266 if (entry.p) total += 12; 267 return total - entry._t.length * 0.05; 268 } 269 270 function buscar(q) { 271 const palabras = norm(q).split(/\s+/).filter(Boolean); 272 if (!palabras.length) return []; 273 const salida = []; 274 for (const e of ENTRIES) { 275 const s = puntuar(e, palabras); 276 if (s > 0) salida.push({ e, s }); 277 } 278 salida.sort((a, b) => b.s - a.s); 279 return salida.slice(0, 8).map((r) => r.e); 280 } 281 282 const escapar = (s) => 283 s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); 284 285 /** Resalta en el titulo los trozos que coinciden con lo escrito. */ 286 function resaltar(titulo, palabras) { 287 const n = norm(titulo); 288 const marcas = new Array(titulo.length).fill(false); 289 for (const p of palabras) {
290 let desde = 0; 291 let i; 292 while ((i = n.indexOf(p, desde)) !== -1) { 293 for (let j = i; j < i + p.length && j < marcas.length; j++) marcas[j] = true; 294 desde = i + p.length; 295 } 296 } 297 let html = ''; 298 let dentro = false; 299 for (let i = 0; i < titulo.length; i++) { 300 if (marcas[i] && !dentro) { html += '<mark class="bg-blue-100 text-blue-900 rounded px-0.5">'; dentro = true; } 301 else if (!marcas[i] && dentro) { html += '</mark>'; dentro = false; } 302 html += escapar(titulo[i]); 303 } 304 if (dentro) html += '</mark>'; 305 return html; 306 } 307 308 let activo = -1; 309 let items = []; 310 311 function abrir() { 312 panel.classList.remove('hidden'); 313 root.dataset.open = 'true'; 314 input.setAttribute('aria-expanded', 'true'); 315 } 316 317 function cerrar() { 318 panel.classList.add('hidden'); 319 root.dataset.open = 'false'; 320 input.setAttribute('aria-expanded', 'false'); 321 activo = -1; 322 } 323 324 function pintar(q) { 325 const palabras = norm(q).split(/\s+/).filter(Boolean); 326 items = buscar(q); 327 activo = -1; 328 329 if (!palabras.length) { 330 tips?.classList.remove('hidden'); 331 results.classList.add('hidden'); 332 vacio?.classList.add('hidden'); 333 results.innerHTML = ''; 334 return; 335 } 336 337 tips?.classList.add('hidden'); 338 339 if (!items.length) { 340 results.classList.add('hidden'); 341 results.innerHTML = ''; 342 if (vacioQ) vacioQ.textContent = '"' + q.trim() + '"'; 343 vacio?.classList.remove('hidden'); 344 return; 345 } 346 347 vacio?.classList.add('hidden'); 348 results.classList.remove('hidden'); 349 results.innerHTML = items 350 .map((e, i) => { 351 const color = COLORES[e.s] || COLORES.pagina; 352 const etiqueta = ETIQUETAS[e.s] || ''; 353 return ( 354 '<li role="option" aria-selected="false" id="site-search-opt-' + i + '">' + 355 '<a href="' + e.u + '" data-i="' + i + '" class="flex items-start gap-3 px-4 py-2.5 no-underline hover:bg-slate-50 data-[on=true]:bg-blue-50 group">' + 356 '<span class="flex-1 min-w-0">' + 357 '<span class="block text-sm font-semibold text-slate-800 truncate">' + resaltar(e.t, palabras) + '</span>' + 358 '<span class="block text-xs text-slate-500 truncate mt-0.5">' + escapar(e.d) + '</span>' + 359 '</span>' + 360 '<span class="shrink-0 mt-0.5 px-2 py-0.5 text-[10px] font-bold uppercase tracking-wide rounded-full ' + color + '">' + etiqueta + '</span>' + 361 '</a></li>' 362 ); 363 }) 364 .join(''); 365 } 366 367 function marcar(i) { 368 const enlaces = results.querySelectorAll('a[data-i]'); 369 enlaces.forEach((a) => {
370 a.dataset.on = 'false'; 371 a.parentElement?.setAttribute('aria-selected', 'false'); 372 }); 373 if (i >= 0 && enlaces[i]) { 374 enlaces[i].dataset.on = 'true'; 375 enlaces[i].parentElement?.setAttribute('aria-selected', 'true'); 376 enlaces[i].scrollIntoView({ block: 'nearest' }); 377 input.setAttribute('aria-activedescendant', 'site-search-opt-' + i); 378 } else { 379 input.removeAttribute('aria-activedescendant'); 380 } 381 } 382 383 /** La "x" y el atajo "/" comparten sitio: nunca se enseñan los dos. */ 384 function botones(hayTexto) { 385 clear?.classList.toggle('hidden', !hayTexto); 386 if (!kbd) return; 387 kbd.classList.toggle('hidden', hayTexto); 388 kbd.classList.toggle('sm:flex', !hayTexto); 389 } 390 391 input.addEventListener('input', () => { 392 const q = input.value; 393 botones(q.length > 0); 394 pintar(q); 395 abrir(); 396 }); 397 398 input.addEventListener('focus', () => { 399 botones(input.value.length > 0); 400 pintar(input.value); 401 abrir(); 402 }); 403 404 input.addEventListener('keydown', (ev) => { 405 if (ev.key === 'ArrowDown') { 406 ev.preventDefault(); 407 if (!items.length) return; 408 activo = (activo + 1) % items.length; 409 marcar(activo); 410 } else if (ev.key === 'ArrowUp') { 411 ev.preventDefault(); 412 if (!items.length) return; 413 activo = activo <= 0 ? items.length - 1 : activo - 1; 414 marcar(activo); 415 } else if (ev.key === 'Enter') { 416 // Sin seleccion explicita, Enter va al primer resultado: es el gesto 417 // que ya tiene aprendido cualquiera que use un buscador. 418 const i = activo >= 0 ? activo : 0; 419 if (items[i]) { 420 ev.preventDefault(); 421 window.location.href = items[i].u; 422 } 423 } else if (ev.key === 'Escape') { 424 if (input.value) { 425 input.value = ''; 426 botones(false); 427 pintar(''); 428 } else { 429 cerrar(); 430 input.blur(); 431 } 432 } 433 }); 434 435 clear?.addEventListener('click', () => { 436 input.value = ''; 437 botones(false); 438 pintar(''); 439 input.focus(); 440 }); 441 442 // Las pistas rellenan el campo y buscan, en vez de navegar a ciegas. 443 tips?.querySelectorAll('button[data-tip]').forEach((b) => { 444 b.addEventListener('mousedown', (ev) => ev.preventDefault()); 445 b.addEventListener('click', () => { 446 input.value = b.dataset.tip || ''; 447 botones(true); 448 pintar(input.value); 449 input.focus(); 450 }); 451 }); 452 453 document.addEventListener('click', (ev) => { 454 if (!root.contains(ev.target)) cerrar(); 455 }); 456 457 // "/" enfoca el buscador desde cualquier parte, salvo si ya se esta 458 // escribiendo en otro campo (las herramientas del sitio son editores). 459 document.addEventListener('keydown', (ev) => { 460 if (ev.key !== '/' || ev.metaKey || ev.ctrlKey || ev.altKey) return; 461 const t = ev.target; 462 const tag = t && t.tagName; 463 if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT' || (t && t.isContentEditable)) return; 464 ev.preventDefault(); 465 input.focus(); 466 }); 467 })(); 468})();</script>
468 <!-- Hello Bar --> <div id="hello-bar" class="fixed top-[7.75rem] left-0 right-0 z-30 bg-slate-900 text-white px-4 py-2.5 flex items-center justify-center gap-3 text-sm shadow-2xl -translate-y-full transition-transform duration-500"> <span class="text-yellow-400 text-base leading-none">â </span> <p class="text-center leading-snug"> 469¿Te es útil esta web? <strong>Apóyala sin coste:</strong> si compras en Amazon, hazlo a través de 470<a href="https://www.amazon.es/?tag=markdown-21" target="_blank" rel="sponsored noopener" class="underline underline-offset-2 text-yellow-300 hover:text-yellow-200 font-semibold transition-colors">nuestro enlace de afiliado</a> 471â el precio es el mismo para ti y nos ayuda a seguir. 472</p> <button id="hello-bar-close" aria-label="Cerrar" class="ml-2 shrink-0 text-slate-400 hover:text-white transition-colors text-lg leading-none">â</button> </div> <main class="flex-1 w-full max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-12 md:py-16">
472<script type="module">const t=document.getElementById("open-zoom"),o=document.getElementById("zoom-modal"),c=document.getElementById("close-zoom"),e=document.getElementById("modal-img");if(t&&o&&e){t.addEventListener("click",()=>{const s=t.querySelector("img");s&&e&&(e.src=s.src,o.classList.remove("hidden"),document.body.style.overflow="hidden",setTimeout(()=>e.classList.remove("scale-95"),10))});const d=()=>{e.classList.add("scale-95"),setTimeout(()=>{o.classList.add("hidden"),document.body.style.overflow=""},200)};o.addEventListener("click",d),c&&c.addEventListener("click",d)}</script>
472 <div class="flex flex-col gap-24 pb-16"> <!-- Hero: editor en vivo --> <section class="relative pt-12 sm:pt-16 pb-4 px-0 sm:px-4"> <div class="absolute inset-0 -z-10 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-blue-100/50 via-slate-50 to-slate-50"></div> <div class="text-center mb-8"> <h1 class="text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-900 mb-5 max-w-4xl mx-auto leading-tight"> 473Escribe <span class="text-transparent bg-clip-text bg-gradient-to-r from-blue-600 to-indigo-600">Markdown</span> y mira el resultado 474</h1> <p class="text-lg sm:text-xl text-slate-600 max-w-2xl mx-auto leading-relaxed"> 475Editor online gratis, sin registro ni instalacion. Escribe a la izquierda y ve el resultado formateado a la derecha. 476</p> </div> <!-- Editor: se escapa del max-w-6xl del <main> para dar mas sitio a las dos columnas --> <div class="editor-wide"> <!-- Cada grupo cae sobre su columna: acciones de entrada a la izquierda, 477 de salida a la derecha, y el menu de herramientas en medio. --> <div class="flex flex-wrap items-center justify-center md:justify-between gap-3 mb-3"> <!-- Izquierda: sobre el textarea. flex-1 + basis-0 para que ambos laterales 478 ocupen lo mismo y el boton central quede centrado de verdad; con 479 justify-between se desplazaba hacia el grupo mas estrecho. --> <div class="flex items-center gap-2 order-1 md:flex-1 md:basis-0"> <button id="btn-sample" disabled class="px-4 py-2 text-sm font-medium text-slate-600 bg-white border border-slate-200 rounded-xl hover:bg-slate-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed">Cargar ejemplo</button> <button id="btn-clear" disabled class="px-4 py-2 text-sm font-medium text-slate-600 bg-white border border-slate-200 rounded-xl hover:bg-slate-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed">Limpiar</button> </div> <!-- Centro: menu de herramientas --> <div class="relative order-3 md:order-2"> <!-- Mismo degradado que "Markdown" en el H1, para que el boton se lea 480 como parte de la marca y no como un elemento suelto. --> <button id="tools-trigger" type="button" aria-haspopup="true" aria-expanded="false" aria-controls="tools-menu" class="inline-flex items-center gap-2 px-6 py-3 bg-gradient-to-r from-blue-600 to-indigo-600 text-white text-sm font-bold rounded-xl hover:from-blue-500 hover:to-indigo-500 transition-all shadow-lg shadow-blue-600/25"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-wand-sparkles w-5 h-5 shrink-0"> <path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72"></path> <path d="m14 7 3 3"></path> <path d="M5 6v4"></path> <path d="M19 14v4"></path> <path d="M10 2v2"></path> <path d="M7 8H3"></path> <path d="M21 16h-4"></path> <path d="M11 3H9"></path> </svg> 481Ver otras herramientas 482<svg id="tools-caret" class="w-4 h-4 shrink-0 transition-transform" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg> </button> <div id="tools-menu" hidden class="absolute z-50 left-1/2 -translate-x-1/2 mt-3 w-[min(42rem,calc(100vw-2rem))] p-3 bg-white border border-slate-200 rounded-[1.5rem] shadow-2xl shadow-slate-900/10"> <div class="grid sm:grid-cols-2 gap-2"> <a href="/herramientas/markdown-a-html" class="group flex items-start gap-3 p-3 rounded-2xl border-2 border-transparent hover:border-slate-200 transition-colors no-underline hover:border-blue-400 hover:bg-blue-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-code-xml w-5 h-5 shrink-0 mt-0.5 text-blue-600"> <path d="m18 16 4-4-4-4"></path> <path d="m6 8-4 4 4 4"></path> <path d="m14.5 4-5 16"></path> </svg> <span class="min-w-0"> <span class="block font-bold text-sm text-slate-900">Markdown â HTML</span> <span class="block text-xs text-slate-600 leading-snug">Convierte a código HTML limpio en tiempo real.</span> </span> </a><a href="/herramientas/html-a-markdown" class="group flex items-start gap-3 p-3 rounded-2xl border-2 border-transparent hover:border-slate-200 transition-colors no-u
482nderline hover:border-orange-400 hover:bg-orange-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-code w-5 h-5 shrink-0 mt-0.5 text-orange-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M10 12.5 8 15l2 2.5"></path> <path d="m14 12.5 2 2.5-2 2.5"></path> </svg> <span class="min-w-0"> <span class="block font-bold text-sm text-slate-900">HTML â Markdown</span> <span class="block text-xs text-slate-600 leading-snug">Limpia código HTML y lo convierte a Markdown portable.</span> </span> </a><a href="/herramientas/markdown-a-pdf" class="group flex items-start gap-3 p-3 rounded-2xl border-2 border-transparent hover:border-slate-200 transition-colors no-underline hover:border-red-400 hover:bg-red-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-down w-5 h-5 shrink-0 mt-0.5 text-red-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M12 18v-6"></path> <path d="m9 15 3 3 3-3"></path> </svg> <span class="min-w-0"> <span class="block font-bold text-sm text-slate-900">Markdown â PDF</span> <span class="block text-xs text-slate-600 leading-snug">Exporta a PDF listo para imprimir o compartir.</span> </span> </a><a href="/herramientas/pdf-a-markdown" class="group flex items-start gap-3 p-3 rounded-2xl border-2 border-transparent hover:border-slate-200 transition-colors no-underline hover:border-red-400 hover:bg-red-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-up w-5 h-5 shrink-0 mt-0.5 text-red-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M12 12v6"></path> <path d="m15 15-3-3-3 3"></path> </svg> <span class="min-w-0"> <span class="block font-bold text-sm text-slate-900">PDF â Markdown</span> <span class="block text-xs text-slate-600 leading-snug">Extrae el texto de un PDF sin subirlo a ningún servidor.</span> </span> </a><a href="/herramientas/imagen-a-markdown" class="group flex items-start gap-3 p-3 rounded-2xl border-2 border-transparent hover:border-slate-200 transition-colors no-underline hover:border-violet-400 hover:bg-violet-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-scan-text w-5 h-5 shrink-0 mt-0.5 text-violet-600"> <path d="M3 7V5a2 2 0 0 1 2-2h2"></path> <path d="M17 3h2a2 2 0 0 1 2 2v2"></path> <path d="M21 17v2a2 2 0 0 1-2 2h-2"></path> <path d="M7 21H5a2 2 0 0 1-2-2v-2"></path> <path d="M7 8h8"></path> <path d="M7 12h10"></path> <path d="M7 16h6"></path> </svg> <span class="min-w-0"> <span class="block font-bold text-sm text-slate-900">Imagen â Markdown (OCR)</span> <span class="block text-xs text-slate-600 leading-snug">Lee el texto de una captura o foto con OCR, sin salir de tu navegador.</span> </span> </a><a href="/herramientas/markdown-a-word" class="group flex items-start gap-3 p-3 rounded-2xl border-2 border-transparent hover:border-slate-200 transition-colors no-underline hover:border-blue-400 hover:bg-blue-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-type-corner w-5 h-5 shrink-0 mt-0.5 text-blue-600"> <path d="M12 22h6a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v6"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M3 16v-1.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5V16"></path> <path d="M6 22h2"></path> <path d="M7 14v8"></path> </svg> <span class="min-w-0"> <span class="block font-bold text-sm text-slate-900">Markdown â Word</span> <span class="block text-xs text-slate-600 leading-snug">Descarga un .docx real con estilos nativos de Word.</span> </span> </a><a href="/herramientas/word-a-markdown" class="group flex items-start gap-3 p-3 rounded-2xl border-2 border-transparent hover:border-slate-200 transition-colors no-u
482nderline hover:border-indigo-400 hover:bg-indigo-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-input w-5 h-5 shrink-0 mt-0.5 text-indigo-600"> <path d="M4 11V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-1"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M2 15h10"></path> <path d="m9 18 3-3-3-3"></path> </svg> <span class="min-w-0"> <span class="block font-bold text-sm text-slate-900">Word â Markdown</span> <span class="block text-xs text-slate-600 leading-snug">Convierte .docx conservando encabezados, listas y tablas.</span> </span> </a><a href="/herramientas/generador-de-tablas" class="group flex items-start gap-3 p-3 rounded-2xl border-2 border-transparent hover:border-slate-200 transition-colors no-underline hover:border-emerald-400 hover:bg-emerald-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-table-2 w-5 h-5 shrink-0 mt-0.5 text-emerald-600"> <path d="M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18"></path> </svg> <span class="min-w-0"> <span class="block font-bold text-sm text-slate-900">Generador Visual de Tablas</span> <span class="block text-xs text-slate-600 leading-snug">Editor tipo hoja de cálculo, sin escribir barras verticales.</span> </span> </a><a href="/herramientas/excel-a-markdown" class="group flex items-start gap-3 p-3 rounded-2xl border-2 border-transparent hover:border-slate-200 transition-colors no-underline hover:border-green-400 hover:bg-green-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-spreadsheet w-5 h-5 shrink-0 mt-0.5 text-green-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M8 13h2"></path> <path d="M14 13h2"></path> <path d="M8 17h2"></path> <path d="M14 17h2"></path> </svg> <span class="min-w-0"> <span class="block font-bold text-sm text-slate-900">Excel â Tabla Markdown</span> <span class="block text-xs text-slate-600 leading-snug">Sube el .xlsx o pega las celdas desde Excel o Sheets.</span> </span> </a><a href="/herramientas/markdown-a-mapa-mental" class="group flex items-start gap-3 p-3 rounded-2xl border-2 border-transparent hover:border-slate-200 transition-colors no-underline hover:border-indigo-400 hover:bg-indigo-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-brain w-5 h-5 shrink-0 mt-0.5 text-indigo-600"> <path d="M12 18V5"></path> <path d="M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4"></path> <path d="M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5"></path> <path d="M17.997 5.125a4 4 0 0 1 2.526 5.77"></path> <path d="M18 18a4 4 0 0 0 2-7.464"></path> <path d="M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517"></path> <path d="M6 18a4 4 0 0 1-2-7.464"></path> <path d="M6.003 5.125a4 4 0 0 0-2.526 5.77"></path> </svg> <span class="min-w-0"> <span class="block font-bold text-sm text-slate-900">Markdown â Mapa Mental</span> <span class="block text-xs text-slate-600 leading-snug">Mapa mental interactivo descargable como PNG o SVG.</span> </span> </a> </div> <a href="/herramientas" class="mt-2 flex items-center justify-center gap-2 px-4 py-3 bg-slate-900 text-white text-sm font-bold rounded-2xl hover:bg-slate-800 transition-colors no-underline"> 483Ver todas las herramientas â 484</a> </div> </div> <!-- Derecha: sobre el resultado --> <div class="flex items-center gap-2 order-2 md:order-3 md:flex-1 md:basis-0 md:justify-end"> <button id="btn-copy-html-top" disabled class="px-4 py-2 text-sm font-bold text-slate-900 bg-white border-2 border-slate-200 rounded-xl hover:border-slate-400 hover:bg-slate-50 transition-colors flex items-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed"> <svg class="w-4 h-4 shrink-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg> 485Copiar HTML 486</button> <button id="btn-copy-rich-top" disabled class="px-4 py-2 text-sm font-bold text-white bg-slate-900 rounded-xl hover:bg-slate-800 transition-colors flex items-center gap-2 shadow-sm disabled:opacity-50 disabled:cursor-not-allowed"> <svg class="w-4 h-4 shrink-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg> 487Copiar texto enriquecido 488</button> </div> </div> <div class="grid md:grid-cols-2 gap-4"> <div class="flex flex-col"> <div class="px-4 py-2.5 bg-slate-800 text-slate-300 text-xs font-bold uppercase tracking-widest rounded-t-2xl">Tu Markdown</div> <textarea id="md-input" spellcheck="false" aria-label="Editor de Markdown" class="flex-1 min-h-[520px] w-full p-5 bg-slate-900 text-slate-100 font-mono text-sm leading-relaxed resize-none focus:outline-none rounded-b-2xl" placeholder="# Mi titulo 489 490Escribe tu **Markdown** aqui..."></textarea> </div> <div class="flex flex-col"> <div class="px-4 py-2.5 bg-slate-50 text-slate-600 text-xs font-bold uppercase tracking-widest rounded-t-2xl border border-b-0 border-slate-200">Resultado</div> <div id="preview" class="flex-1 min-h-[520px] p-8 bg-white border border-t-0 border-slate-200 rounded-b-2xl overflow-auto prose prose-slate max-w-none prose-headings:font-extrabold prose-a:text-blue-600 prose-img:rounded-xl"></div> </div> </div> <!-- Acciones al pie: el usuario acaba de escribir y quiere llevarse el resultado --> <div class="flex flex-col sm:flex-row items-center justify-center gap-3 mt-6"> <button id="btn-copy-html-bottom" disabled class="w-full sm:w-auto px-6 py-3.5 text-sm font-bold text-slate-900 bg-white border-2 border-slate-200 rounded-xl hover:border-slate-400 hover:bg-slate-50 transition-colors flex items-center justify-center gap-2 shadow-sm disabled:opacity-50 disabled:cursor-not-allowed"> <svg class="w-4 h-4 shrink-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg> 491Copiar HTML 492</button> <button id="btn-copy-rich" disabled class="w-full sm:w-auto px-6 py-3.5 text-sm font-bold text-white bg-slate-900 rounded-xl hover:bg-slate-800 transition-colors flex items-center justify-center gap-2 shadow-sm disabled:opacity-50 disabled:cursor-not-allowed"> <svg class="w-4 h-4 shrink-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg> 493Copiar texto enriquecido 494</button> </div> <p class="text-center text-sm text-slate-500 mt-5"> 495Pega el texto enriquecido en Word, Google Docs o tu correo y conserva el formato. 496 Todo ocurre en tu navegador: tu texto no se envia a ningun servidor. 497<a href="/sintaxis-markdown" class="text-blue-600 font-semibold hover:underline">Consulta la sintaxis completa</a> </p> </div> </section> <!-- Conversores --> <section class="max-w-6xl mx-auto w-full px-4 sm:px-6"> <div class="text-center mb-10"> <h2 class="text-3xl sm:text-4xl font-extrabold tracking-tight text-slate-900 mb-4">
497Convierte tu Markdown</h2> <p class="text-lg text-slate-600 max-w-2xl mx-auto">Pasa tu texto a cualquier formato, gratis y sin registro.</p> </div> <div class="grid sm:grid-cols-2 lg:grid-cols-3 gap-4"> <a href="/herramientas/markdown-a-html" class="group flex flex-col p-6 rounded-[1.5rem] bg-white border-2 border-slate-200 transition-all duration-200 hover:-translate-y-1 hover:shadow-lg no-underline hover:border-blue-400 hover:bg-blue-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-code-xml w-7 h-7 mb-3 text-blue-600"> <path d="m18 16 4-4-4-4"></path> <path d="m6 8-4 4 4 4"></path> <path d="m14.5 4-5 16"></path> </svg> <h3 class="font-bold text-base text-slate-900 mb-1">Markdown â HTML</h3> <p class="text-sm text-slate-600 leading-relaxed flex-1">Convierte a código HTML limpio en tiempo real.</p> <div class="mt-4 text-xs font-bold uppercase tracking-widest text-slate-400 group-hover:text-slate-600 transition-colors">Usar herramienta â</div> </a><a href="/herramientas/html-a-markdown" class="group flex flex-col p-6 rounded-[1.5rem] bg-white border-2 border-slate-200 transition-all duration-200 hover:-translate-y-1 hover:shadow-lg no-underline hover:border-orange-400 hover:bg-orange-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-code w-7 h-7 mb-3 text-orange-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M10 12.5 8 15l2 2.5"></path> <path d="m14 12.5 2 2.5-2 2.5"></path> </svg> <h3 class="font-bold text-base text-slate-900 mb-1">HTML â Markdown</h3> <p class="text-sm text-slate-600 leading-relaxed flex-1">Limpia código HTML y lo convierte a Markdown portable.</p> <div class="mt-4 text-xs font-bold uppercase tracking-widest text-slate-400 group-hover:text-slate-600 transition-colors">Usar herramienta â</div> </a><a href="/herramientas/markdown-a-pdf" class="group flex flex-col p-6 rounded-[1.5rem] bg-white border-2 border-slate-200 transition-all duration-200 hover:-translate-y-1 hover:shadow-lg no-underline hover:border-red-400 hover:bg-red-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-down w-7 h-7 mb-3 text-red-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M12 18v-6"></path> <path d="m9 15 3 3 3-3"></path> </svg> <h3 class="font-bold text-base text-slate-900 mb-1">Markdown â PDF</h3> <p class="text-sm text-slate-600 leading-relaxed flex-1">Exporta a PDF listo para imprimir o compartir.</p> <div class="mt-4 text-xs font-bold uppercase tracking-widest text-slate-400 group-hover:text-slate-600 transition-colors">Usar herramienta â</div> </a><a href="/herramientas/pdf-a-markdown" class="group flex flex-col p-6 rounded-[1.5rem] bg-white border-2 border-slate-200 transition-all duration-200 hover:-translate-y-1 hover:shadow-lg no-underline hover:border-red-400 hover:bg-red-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-up w-7 h-7 mb-3 text-red-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M12 12v6"></path> <path d="m15 15-3-3-3 3"></path> </svg> <h3 class="font-bold text-base text-slate-900 mb-1">PDF â Markdown</h3> <p class="text-sm text-slate-600 leading-relaxed flex-1">
497Extrae el texto de un PDF sin subirlo a ningún servidor.</p> <div class="mt-4 text-xs font-bold uppercase tracking-widest text-slate-400 group-hover:text-slate-600 transition-colors">Usar herramienta â</div> </a><a href="/herramientas/imagen-a-markdown" class="group flex flex-col p-6 rounded-[1.5rem] bg-white border-2 border-slate-200 transition-all duration-200 hover:-translate-y-1 hover:shadow-lg no-underline hover:border-violet-400 hover:bg-violet-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-scan-text w-7 h-7 mb-3 text-violet-600"> <path d="M3 7V5a2 2 0 0 1 2-2h2"></path> <path d="M17 3h2a2 2 0 0 1 2 2v2"></path> <path d="M21 17v2a2 2 0 0 1-2 2h-2"></path> <path d="M7 21H5a2 2 0 0 1-2-2v-2"></path> <path d="M7 8h8"></path> <path d="M7 12h10"></path> <path d="M7 16h6"></path> </svg> <h3 class="font-bold text-base text-slate-900 mb-1">Imagen â Markdown (OCR)</h3> <p class="text-sm text-slate-600 leading-relaxed flex-1">Lee el texto de una captura o foto con OCR, sin salir de tu navegador.</p> <div class="mt-4 text-xs font-bold uppercase tracking-widest text-slate-400 group-hover:text-slate-600 transition-colors">Usar herramienta â</div> </a><a href="/herramientas/markdown-a-word" class="group flex flex-col p-6 rounded-[1.5rem] bg-white border-2 border-slate-200 transition-all duration-200 hover:-translate-y-1 hover:shadow-lg no-underline hover:border-blue-400 hover:bg-blue-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-type-corner w-7 h-7 mb-3 text-blue-600"> <path d="M12 22h6a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v6"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M3 16v-1.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5V16"></path> <path d="M6 22h2"></path> <path d="M7 14v8"></path> </svg> <h3 class="font-bold text-base text-slate-900 mb-1">Markdown â Word</h3> <p class="text-sm text-slate-600 leading-relaxed flex-1">Descarga un .docx real con estilos nativos de Word.</p> <div class="mt-4 text-xs font-bold uppercase tracking-widest text-slate-400 group-hover:text-slate-600 transition-colors">Usar herramienta â</div> </a><a href="/herramientas/word-a-markdown" class="group flex flex-col p-6 rounded-[1.5rem] bg-white border-2 border-slate-200 transition-all duration-200 hover:-translate-y-1 hover:shadow-lg no-underline hover:border-indigo-400 hover:bg-indigo-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-input w-7 h-7 mb-3 text-indigo-600"> <path d="M4 11V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-1"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M2 15h10"></path> <path d="m9 18 3-3-3-3"></path> </svg> <h3 class="font-bold text-base text-slate-900 mb-1">Word â Markdown</h3> <p class="text-sm text-slate-600 leading-relaxed flex-1">Convierte .docx conservando encabezados, listas y tablas.</p> <div class="mt-4 text-xs font-bold uppercase tracking-widest text-slate-400 group-hover:text-slate-600 transition-colors">Usar herramienta â</div> </a><a href="/herramientas/generador-de-tablas" class="group flex flex-col p-6 rounded-[1.5rem] bg-white border-2 border-slate-200 transition-all duration-200 hover:-translate-y-1 hover:shadow-lg no-underline hover:border-emerald-400 hover:bg-emerald-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-table-2 w-7 h-7 mb-3 text-emerald-600"> <path d="M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18"></path> </svg> <h3 class="font-bold text-base text-slate-900 mb-1">Generador Visual de Tablas</h3> <p class="text-sm text-slate-600 leading-relaxed flex-1">Editor tipo hoja de cálculo, sin escribir barras verticales.</p> <div class="mt-4 text-xs font-bold uppercase tracking-widest text-slate-400 group-hover:text-slate-600 transition-colors">Usar herramienta â</div> </a><a href="/herramientas/excel-a-markdown" class="group flex flex-col p-6 rounded-[1.5rem] bg-white border-2 border-slate-200 transition-all duration-200 hover:-translate-y-1 hover:shadow-lg no-underline hover:border-green-400 hover:bg-green-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-spreadsheet w-7 h-7 mb-3 text-green-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M8 13h2"></path> <path d="M14 13h2"></path> <path d="M8 17h2"></path> <path d="M14 17h2"></path> </svg> <h3 class="font-bold text-base text-slate-900 mb-1">Excel â Tabla Markdown</h3> <p class="text-sm text-slate-600 leading-relaxed flex-1">Sube el .xlsx o pega las celdas desde Excel o Sheets.</p> <div class="mt-4 text-xs font-bold uppercase tracking-widest text-slate-400 group-hover:text-slate-600 transition-colors">Usar herramienta â</div> </a><a href="/herramientas/markdown-a-mapa-mental" class="group flex flex-col p-6 rounded-[1.5rem] bg-white border-2 border-slate-200 transition-all duration-200 hover:-translate-y-1 hover:shadow-lg no-underline hover:border-indigo-400 hover:bg-indigo-50"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-brain w-7 h-7 mb-3 text-indigo-600"> <path d="M12 18V5"></path> <path d="M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4"></path> <path d="M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5"></path> <path d="M17.997 5.125a4 4 0 0 1 2.526 5.77"></path> <path d="M18 18a4 4 0 0 0 2-7.464"></path> <path d="M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517"></path> <path d="M6 18a4 4 0 0 1-2-7.464"></path> <path d="M6.003 5.125a4 4 0 0 0-2.526 5.77"></path> </svg> <h3 class="font-bold text-base text-slate-900 mb-1">Markdown â Mapa Mental</h3> <p class="text-sm text-slate-600 leading-relaxed flex-1">Mapa mental interactivo descargable como PNG o SVG.</p> <div class="mt-4 text-xs font-bold uppercase tracking-widest text-slate-400 group-hover:text-slate-600 transition-colors">Usar herramienta â</div> </a> </div> <div class="text-center mt-8"> <a href="/herramientas" class="inline-flex items-center gap-2 px-8 py-4 bg-slate-900 text-white font-medium rounded-xl hover:bg-slate-800 transition-all shadow-lg shadow-slate-900/20"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-wand-sparkles w-5 h-5"> <path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72"></path> <path d="m14 7 3 3"></path> <path d="M5 6v4"></path> <path d="M19 14v4"></path> <path d="M10 2v2"></path> <path d="M7 8H3"></path> <path d="M21 16h-4"></path> <path d="M11 3H9"></path> </svg> 498Ver todas las herramientas 499</a> </div> </section> <!-- Qué es Markdown? Section --> <section id="que-es-markdown" class="max-w-6xl mx-auto w-full px-4 sm:px-6"> <div class="flex flex-col items-center text-center mb-12"> <div class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-slate-200/50 text-slate-600 text-sm font-semibold tracking-wide mb-6"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-book-open w-4 h-4"> <path d="M12 7v14"></path> <path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"></path> </svg> Introducción 500</div> <h2 class="text-4xl sm:text-5xl lg:text-6xl font-extrabold tracking-tight text-slate-900 mb-8">¿Qué es Markdown?</h2> <p class="text-xl sm:text-2xl font-medium text-slate-800 leading-tight max-w-4xl"> 501Markdown nació en 2004 de la mano de John Gruber como herramienta de conversión de texto plano a HTML, bajo una licencia BSD. 502</p> </div> <div class="bg-white p-8 sm:p-12 rounded-[2.5rem] border border-slate-200/60 shadow-xl shadow-slate-200/20 overflow-hidden relative"> <div class="block"> <!-- Image floated to the right for "surrounded" text effect on desktop --> <div class="md:float-right md:ml-12 mb-8 md:mb-4 flex flex-col items-center group cursor-pointer w-full md:w-auto"> <button id="open-zoom" class="block relative focus:outline-none"> <img src="/diferencia-markdown-html.jpg" alt="Diferencia Markdown y HTML" class="rounded-2xl w-full max-w-md
502shadow-lg border-4 border-white transition-transform duration-500 group-hover:scale-[1.02]"> <div class="absolute inset-0 bg-slate-900/0 group-hover:bg-slate-900/5 transition-colors rounded-2xl"></div> </button> <p class="text-center text-slate-500 text-sm mt-4 font-medium italic">Sintaxis Markdown vs Sintaxis HTML <br> <span class="text-blue-600 not-italic">(clic para ampliar)</span></p> </div> <div class="text-lg text-slate-600 leading-relaxed"> <p class="mb-6"> 503Aunque se le conoce como herramienta, también se considera un <strong>método o lenguaje de escritura</strong>. 504</p> <p class="mb-6"> 505Su fin es permitirte redactar contenido de manera sencilla, manteniendo un diseño legible en su código en todo momento. 506</p> <p class="mb-6"> 507Haciendo uso estricto de texto plano, puedes añadir formatos como <strong>negritas</strong>, <em>cursivas</em> o <a href="https://helenizarte.com" class="text-blue-600 hover:text-blue-500 transition-colors font-medium">enlaces</a> sin distraerte usando menús o botones complicados, lo que multiplicará tu eficiencia al escribir. 508</p> <p class="mb-6"> 509De cara al usuario final no hay ninguna diferencia. Esta web está escrita Ãntegramente en Markdown, como puedes ver, todo está perfectamente formateado. 510</p> <p> 511Los documentos se guardan con la extensión <code class="px-1.5 py-0.5 rounded bg-slate-100 text-slate-800 text-base font-mono">.md</code>. Si has llegado aquà porque te ha llegado uno y no sabes qué hacer con él, mira <a href="/archivo-md" class="text-blue-600 hover:text-blue-500 transition-colors font-medium">qué es un archivo .MD y cómo abrirlo</a>. 512</p> </div> </div> </div> <!-- Simple Modal for Zoom --> <div id="zoom-modal" class="fixed inset-0 z-[100] hidden bg-slate-950/80 backdrop-blur-sm flex items-center justify-center p-4 cursor-zoom-out"> <div class="relative max-w-5xl w-full flex items-center justify-center"> <img id="modal-img" src="" alt="Ampliado" class="max-w-full max-h-[90vh] rounded-lg shadow-2xl transition-transform duration-300 scale-95"> <button id="close-zoom" class="absolute -top-12 right-0 text-white hover:text-blue-400 transition-colors"> <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg> </button> </div> </div> <!-- Home Ad Space 1 --> <div class="mt-12 w-full"> <div class="w-full flex justify-center my-8 min-h-[100px] sm:min-h-[90px]"> <div id="53292-1"></div> </div> </div> </section> <!-- Para qué sirve? Section --> <section class="max-w-6xl mx-auto w-full px-4 sm:px-6"> <div class="bg-white rounded-[2.5rem] p-8 sm:p-12 lg:p-16 border border-slate-200/60 shadow-xl shadow-slate-200/20 relative overflow-hidden"> <div class="absolute top-0 right-0 -mt-20 -mr-20 w-80 h-80 bg-blue-50 rounded-full blur-3xl op
512acity-50 pointer-events-none"></div> <div class="text-center mb-16 relative z-10"> <h2 class="text-3xl sm:text-4xl font-extrabold tracking-tight text-slate-900 mb-4">¿Para qué sirve?</h2> <p class="text-lg text-slate-600 max-w-2xl mx-auto">Su increÃble simplificación y adopción lo han convertido en la navaja suiza para publicar contenido en cualquier rincón de la red.</p> </div> <div class="grid sm:grid-cols-2 lg:grid-cols-4 gap-10 relative z-10"> <div class="flex flex-col items-center text-center group"> <div class="w-16 h-16 bg-blue-50/80 rounded-2xl flex items-center justify-center mb-5 group-hover:bg-blue-600 group-hover:-translate-y-1 transition-all duration-300"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-globe w-8 h-8 text-blue-600 group-hover:text-white transition-colors duration-300"> <circle cx="12" cy="12" r="10"></circle> <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path> <path d="M2 12h20"></path> </svg> </div> <h3 class="font-bold text-slate-900 mb-2 text-lg">Publica online</h3> <p class="text-sm text-slate-600 leading-relaxed">Perfecto para blogs (WordPress, Ghost). El <a href="/herramientas/markdown-a-html" class="text-blue-600 font-semibold hover:underline">HTML resultante</a> nunca ha sido tan limpio.</p> </div> <div class="flex flex-col items-center text-center group"> <div class="w-16 h-16 bg-indigo-50/80 rounded-2xl flex items-center justify-center mb-5 group-hover:bg-indigo-600 group-hover:-translate-y-1 transition-all duration-300"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-layers w-8 h-8 text-indigo-600 group-hover:text-white transition-colors duration-300"> <path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"></path> <path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"></path> <path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"></path> </svg> </div> <h3 class="font-bold text-slate-900 mb-2 text-lg">Escribe en foros</h3> <p class="text-sm text-slate-600 leading-relaxed">Lugares modernos como Trello, Slack o StackOverflow soportan este lenguaje nativamente.</p> </div> <div class="flex flex-col items-center text-center group"> <div class="w-16 h-16 bg-emerald-50/80 rounded-2xl flex items-center justify-center mb-5 group-hover:bg-emerald-600 group-hover:-translate-y-1 transition-all duration-300"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-smartphone w-8 h-8 text-emerald-600 group-hover:text-white transition-colors duration-300"> <rect width="14" height="20" x="5" y="2" rx="2" ry="2"></rect> <path d="M12 18h.01"></path> </svg> </div> <h3 class="font-bold text-slate-900 mb-2 text-lg">Toma notas</h3> <p class="text-sm text-slate-600 leading-relaxed">Toma apuntes en clases o reuniones ágilmente usando tu móvil, gracias a la amplia variedad de <a href="/aplicaciones-markdown" class="text-emerald-600 font-semibold hover:underline">aplicaciones</a>.</p> </div> <div class="flex flex-col items-center text-center group"> <div class="w-16 h-16 bg-purple-50/80 rounded-2xl flex items-center justify-center mb-5 group-hover:bg-purple-600 group-hover:-translate-y-1 transition-all duration-300"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-book w-8 h-8 text-purple-600 group-hover:text-white transition-colors duration-300"> <path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20"></path> </svg> </div> <h3 class="font-bold text-slate-900 mb-2 text-lg">Escribe libros</h3> <p class="text-sm text-slate-600 leading-relaxed">Escribe un libro entero en texto plano y expórtalo a ePub o PDF.</p> </div> </div> </div> </section> <!-- Por qué elegir Markdown Section (Merged Design) --> <section class="max-w-6xl mx-auto w-full px-4 sm:px-6"> <div class="text-center mb-16"> <div class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-blue-100/50 text-blue-700 text-sm font-semibold tracking-wide mb-4"> 513Ventajas 514</div> <h2 class="text-3xl sm:text-4xl font-extrabold tracking-tight text-slate-900 mb-6">¿Por qué elegir Markdown?</h2> <p class="text-lg text-slate-600 max-w-2xl mx-auto leading-relaxed"> 515Una manera infalible de mantener todo tu contenido siempre accesible, garantizando compatibilidad total y facilidad de uso sin depender de lenguajes complejos. 516</p> </div> <div class="grid md:grid-cols-2 gap-8 mb-8"> <div class="bg-white rounded-[2rem] p-8 border border-slate-200/60 shadow-sm hover:shadow-xl hover:shadow-blue-900/5 hover:-translate-y-1 transition-all duration-300 group"> <div class="w-14 h-14 bg-blue-50/80 rounded-xl flex items-center justify-center mb-6 group-hover:bg-blue-100 group-hover:scale-110 transition-all"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-file-text w-6 h-6 text-blue-600"> <path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"></path> <path d="M14 2v5a1 1 0 0 0 1 1h5"></path> <path d="M10 9H8"></path> <path d="M16 13H8"></path> <path d="M16 17H8"></path> </svg> </div> <h3 class="text-xl font-bold text-slate-900 mb-4">A prueba del futuro</h3> <p class="text-slate-600 leading-relaxed">Si procesadores como Word desapareciesen, perderÃas tus archivos en formato pesado. Estando basado en formato de texto plano universal, Markdown siempre será legible en cualquier ordena
516dors de cualquier época.</p> </div> <div class="bg-white rounded-[2rem] p-8 border border-slate-200/60 shadow-sm hover:shadow-xl hover:shadow-indigo-900/5 hover:-translate-y-1 transition-all duration-300 group"> <div class="w-14 h-14 bg-indigo-50/80 rounded-xl flex items-center justify-center mb-6 group-hover:bg-indigo-100 group-hover:scale-110 transition-all"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-circle-check w-6 h-6 text-indigo-600"> <circle cx="12" cy="12" r="10"></circle> <path d="m9 12 2 2 4-4"></path> </svg> </div> <h3 class="text-xl font-bold text-slate-900 mb-4">Texto plano + Estilo</h3> <p class="text-slate-600 leading-relaxed">El problema del texto plano tradicional es no poder añadirle <strong>negritas</strong> o enlaces. Markdown soluciona esto dotándolo de una sintaxis inmensamente sencilla que se compila limpiamente para los navegadores sin entorpecerte.</p> </div> </div> <div class="w-full"> <div class="bg-white rounded-[2rem] p-8 border border-slate-200/60 shadow-sm hover:shadow-xl hover:shadow-purple-900/5 hover:-translate-y-1 transition-all duration-300 group flex flex-col sm:flex-row items-start sm:items-center gap-8"> <div class="shrink-0 w-16 h-16 bg-purple-50/80 rounded-2xl flex items-center justify-center group-hover:bg-purple-100 group-hover:scale-110 transition-all"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-square-terminal w-8 h-8 text-purple-600"> <path d="m7 11 2-2-2-2"></path> <path d="M11 13h4"></path> <rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect> </svg> </div> <div> <h3 class="text-2xl font-bold text-slate-900 mb-3">100% Multiplataforma</h3> <p class="text-slate-600 leading-relaxed text-lg">Da igual si usas Windows, un Mac, o estás en tu iPad o smartphone Android. Este ecosistema está rodeado de maravillosas <a href="/aplicaciones-markdown" class="text-purple-600 hover:underline">aplicaciones creadas especÃficamente</a> para editar este simple contenido en todas partes.</p> </div> </div> </div> </section> <!-- Home Ad Space 2 --> <div class="max-w-6xl mx-auto w-full px-4 sm:px-6 pb-4"> <div class="w-full flex justify-center my-8 min-h-[100px] sm:min-h-[90px]"> <div id="53292-1"></div> </div> </div> <!-- CTAs Banner --> <section class="max-w-6xl mx-auto w-full px-4 sm:px-6 pb-20"> <div class="w-full bg-slate-900 rounded-[2.5rem] p-8 sm:p-12 lg:p-16 overflow-hidden relative shadow-2xl"> <div class="absolute top-0 right-0 w-96 h-96 bg-blue-600 rounded-full blur-[100px] opacity-30 -mr-20 -mt-20"></div> <div class="absolute bottom-0 left-0 w-80 h-80 bg-indigo-600 rounded-full blur-[80px] opacity-20 -ml-20 -mb-20"></div> <div class="relative z-10 flex flex-col items-center text-center gap-10"> <div class="max-w-3xl mx-auto"> <h2 class="text-4xl sm:text-5xl font-extrabold tracking-tight text-white mb-6 leading-tight">Empieza a incorporar Markdown en tu rutina</h2> <p class="text-slate-300 text-xl md:text-2xl leading-relaxed">Domina su escritura en cinco minutos o descubre las mejores aplicaciones para sacarle el máximo partido.</p> </div> <div class="flex flex-col sm:flex-row gap-6 w-full sm:w-auto justify-center flex-wrap"> <a href="/sintaxis-markdown" class="px-10 py-5 bg-slate-800 text-white border border-slate-700 font-bold text-lg rounded-2xl hover:bg-slate-700 hover:-translate-y-1 transition-all"> 517Aprender Sintaxis 518</a> <a href="/aplicaciones-markdown" class="px-10 py-5 bg-slate-800 text-white border border-slate-700 font-bold text-lg rounded-2xl hover:bg-slate-700 hover:-translate-y-1 transition-all"> 519Ver Aplicaciones 520</a> <a href="/herramientas" class="px-10 py-5 bg-slate-800 text-white border border-slate-700 font-bold text-lg rounded-2xl hover:bg-slate-700 hover:-translate-y-1 transition-all"> 521Herramientas Online 522</a> </div> </div> </div> </section> </div> </main> <footer class="bg-slate-50 border-t border-slate-200 mt-24">
522 <!-- Main footer: useful links --> <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-12"> <div class="grid grid-cols-2 sm:grid-cols-4 gap-8"> <div> <p class="text-xs font-bold text-slate-400 uppercase tracking-widest mb-3">Aprender</p> <ul class="flex flex-col gap-2"> <li><a href="/sintaxis-markdown" class="text-sm text-slate-600 hover:text-blue-600 transition-colors">Sintaxis Markdown</a></li> <li><a href="/multimarkdown" class="text-sm text-slate-600 hover:text-blue-600 transition-colors">MultiMarkdown</a></li> <li><a href="/blog" class="text-sm text-slate-600 hover:text-blue-600 transition-colors">ArtÃculos</a></li> </ul> </div> <div> <p class="text-xs font-bold text-slate-400 uppercase tracking-widest mb-3">Herramientas</p> <ul class="flex flex-col gap-2"> <li><a href="/herramientas/markdown-a-html" class="text-sm text-slate-600 hover:text-blue-600 transition-colors">Markdown â HTML</a></li> <li><a href="/herramientas/markdown-a-pdf" class="text-sm text-slate-600 hover:text-blue-600 transition-colors">Markdown â PDF</a></li> <li><a href="/herramientas/pdf-a-markdown" class="text-sm text-slate-600 hover:text-blue-600 transition-colors">PDF â Markdown</a></li> <li><a href="/herramientas/markdown-a-word" class="text-sm text-slate-600 hover:text-blue-600 transition-colors">Markdown â Word</a></li> <li><a href="/herramientas/generador-de-tablas" class="text-sm text-slate-600 hover:text-blue-600 transition-colors">Generador de tablas</a></li> <li><a href="/herramientas" class="text-sm text-blue-600 hover:text-blue-500 transition-colors font-medium">Ver todas â</a></li> </ul> </div> <div> <p class="text-xs font-bold text-slate-400 uppercase tracking-widest mb-3">Aplicaciones</p> <ul class="flex flex-col gap-2"> <li><a href="/aplicaciones-markdown/mac/" class="text-sm text-slate-600 hover:text-blue-600 transition-colors">Apps para Mac</a></li> <li><a href="/aplicaciones-markdown/windows/" class="text-sm text-slate-600 hover:text-blue-600 transition-colors">Apps para Windows</a></li> <li><a href="/aplicaciones-markdown/gratis/" class="text-sm text-slate-600 hover:text-blue-600 transition-colors">Apps Gratuitas</a></li> <li><a href="/aplicaciones-markdown" class="text-sm text-blue-600 hover:text-blue-500 transition-colors font-medium">Ver directorio â</a></li> </ul> </div> <div> <p class="text-xs font-bold text-slate-400 uppercase tracking-widest mb-3">Acerca de</p> <ul class="flex flex-col gap-2"> <li><a href="/javier-cristobal" class="text-sm text-slate-600 hover:text-blue-600 transition-colors">Sobre mÃ</a></li> </ul> </div> </div> </div> <!-- Bottom bar: legal --> <div class="border-t border-slate-200 bg-white"> <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-4 flex flex-col sm:flex-row items-center justify-between gap-3"> <div class="flex flex-col sm:flex-row items-center gap-2"> <div class="flex items-center gap-2"> <img src="/Markdown-logo.png" alt="Markdown.es Logo" class="h-5 w-5 object-contain opacity-40 grayscale"> <span class="text-slate-400 text-xs">© 2026 Markdown.es</span> </div> <span class="hidden sm:inline text-slate-200">·</span> <span class="text-slate-400 text-xs">Participante en el Programa de Afiliados de Amazon EU. Obtengo comisiones por compras realizadas a través de mis enlaces.</span> </div> <div class="flex flex-wrap justify-center gap-x-5 gap-y-1"> <a href="/aviso-legal" class="text-slate-400 hover:text-slate-600 transition-colors text-xs">Aviso Legal</a> <a href="/politica-de-privacidad" class="text-slate-400 hover:text-slate-600 transition-colors text-xs">Privacidad</a> <a href="/politica-de-cookies" class="text-slate-400 hover:text-slate-600 transition-colors text-xs">Cookies</a> </div> </div> </div> </footer> <!-- Back to Top Button --> <button id="back-to-top" class="fixed bottom-6 right-6 p-4 bg-slate-900 text-white rounded-full shadow-xl hover:bg-blue-600 hover:-translate-y-1 transition-all opacity-0 translate-y-10 focus:outline-none focus:ring-4 focus:ring-blue-300 z-50 pointer-events-none data-[visible=true]:opacity-100 data-[visible=true]:translate-y-0 data-[visible=true]:pointer-events-auto"> <svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" width="24" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" viewBox="0 0 24 24" class="lucide lucide-arrow-up w-6 h-6"> <path d="m5 12 7-7 7 7"></path> <path d="M12 19V5"></path> </svg> <span class="sr-only">Volver arriba</span> </button>
522<script type="module">const e=document.getElementById("hello-bar"),l=document.getElementById("hello-bar-close");e&&!localStorage.getItem("hellobar-dismissed")&&(setTimeout(()=>e.classList.remove("-translate-y-full"),2e3),l?.addEventListener("click",()=>{e.classList.add("-translate-y-full"),localStorage.setItem("hellobar-dismissed","1")}));</script>
522
522<script type="module">const t=document.getElementById("back-to-top");if(t){const e=()=>{window.scrollY>400?t.setAttribute("data-visible","true"):t.setAttribute("data-visible","false")};window.addEventListener("scroll",e,{passive:!0}),t.addEventListener("click",()=>{window.scrollTo({top:0,behavior:"smooth"})})}</script>
522
522<script defer src="https://ads.themoneytizer.com/s/gen.js?type=1"></script>
522<script defer src="https://ads.themoneytizer.com/s/requestform.js?siteId=53292&formatId=1"></script>
522 </body></html> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tailwindcss/[email protected]/dist/typography.min.css">
522<script type="module">const b=`# Hola, esto es Markdown 523 524Escribe **negrita**, *cursiva* o [enlaces](https://markdown.es) sin tocar un solo boton. 525 526## Listas 527 528- Primer elemento 529- Segundo elemento 530 - Anidado 5311. Numerada 5322. Y sigue 533 534## Tarea pendiente 535 536- [x] Aprender la sintaxis 537- [ ] Convertir a PDF 538 539## Codigo 540 541\`\`\`javascript 542const saludo = () => console.log("Hola Markdown"); 543\`\`\` 544 545## Tabla 546 547| App | Plataforma | Precio | 548|-----|-----------|--------| 549| Obsidian | Multi | Gratis | 550| Typora | Multi | 14,99 $ | 551 552> Lo simple es lo que mejor envejece. 553 554--- 555 556Prueba a editar este texto y mira como cambia el resultado.`;function T(){return new Promise(n=>{const t=document.createElement("script");t.src="https://cdn.jsdelivr.net/npm/[email protected]/marked.min.js",t.onload=()=>n(),document.head.appendChild(t)})}async function g(){const n=document.getElementById("md-input"),t=document.getElementById("preview"),s=document.getElementById("btn-clear"),l=document.getElementById("btn-sample"),i=document.getElementById("btn-copy-rich"),r=document.getElementById("btn-copy-html-bottom"),c=document.getElementById("btn-copy-rich-top"),d=document.getElementById("btn-copy-html-top");if(!n||!t)return;await T();const m=window.marked;m.setOptions({breaks:!0,gfm:!0});const a=()=>{t.innerHTML=m.parse(n.value||"")};n.addEventListener("input",a),s?.addEventListener("click",()=>{n.value="",a(),n.focus()}),l?.addEventListener("click",()=>{n.value=b,a()});const o=(e,y)=>{e.dataset.original===void 0&&(e.dataset.original=e.innerHTML);const v=[...e.childNodes].find(E=>E.nodeType===Node.TEXT_NODE&&E.textContent.trim());v?v.textContent=` ${y} `:e.textContent=y,setTimeout(()=>{e.innerHTML=e.dataset.original},2e3)},p=async e=>{try{await navigator.clipboard.writeText(t.innerHTML),o(e,"HTML copiado")}catch{o(e,"No se pudo copiar")}},u=async e=>{try{await navigator.clipboard.write([new ClipboardItem({"text/html":new Blob([t.innerHTML],{type:"text/html"}),"text/plain":new Blob([t.innerText],{type:"text/plain"})})]),o(e,"Copiado con formato")}catch{try{await navigator.clipboard.writeText(t.innerText),o(e,"Copiado como texto plano")}catch{o(e,"No se pudo copiar")}}};r?.addEventListener("click",()=>p(r)),i?.addEventListener("click",()=>u(i)),d?.addEventListener("click",()=>p(d)),c?.addEventListener("click",()=>u(c)),n.value=b,a(),[s,l,i,r,c,d].forEach(e=>e?.removeAttribute("disabled"))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",g):g();</script>
556
556<script type="module">function o(){const n=document.getElementById("tools-trigger"),t=document.getElementById("tools-menu"),i=document.getElementById("tools-caret");if(!n||!t)return;const d=e=>{t.hidden=!e,n.setAttribute("aria-expanded",String(e)),i?.classList.toggle("rotate-180",e)};n.addEventListener("click",e=>{e.stopPropagation(),d(t.hidden)}),document.addEventListener("click",e=>{!t.hidden&&!t.contains(e.target)&&e.target!==n&&d(!1)}),document.addEventListener("keydown",e=>{e.key==="Escape"&&!t.hidden&&(d(!1),n.focus())}),t.addEventListener("focusout",()=>{setTimeout(()=>{!t.contains(document.activeElement)&&document.activeElement!==n&&d(!1)},0)})}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",o):o();</script>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.