Gratis · Sin registro · Sin límites

Generador de Constancia Laboral
Online Gratis

Crear constancia laboral Online profesional en menos de 2 minutos. Descárgala en Word o PDF, lista para usar en cualquier trámite.

Colombia · México · Perú
Chile · Argentina · España
Word & PDF profesional
0 / 9 campos:
0%
Configuración
Campo requerido
Campo requerido
Campo requerido
Empresa
Campo requerido
Trabajador
Campo requerido
Campo requerido
Campo requerido
Responsable / Firmante
Campo requerido
Campo requerido
Vista previa en tiempo real
En vivo

Completa el formulario
para ver la vista previa

¿Qué es una Constancia Laboral y para qué sirve?

Una constancia laboral es un documento oficial emitido por un empleador que certifica la relación de trabajo de una persona. Es solicitada en trámites bancarios, visas, arriendos, créditos y más en toda Latinoamérica y España.

📋¿Cuándo necesitas una?

Para abrir cuentas bancarias, solicitar créditos, tramitar visas, arrendar inmuebles, inscribirte en programas o como respaldo de tu situación laboral actual.

🔍¿Constancia o Certificado?

En Colombia: certificado laboral. En México: constancia de trabajo. En Perú y Chile: constancia laboral. En España: certificado de empresa. El generador adapta el nombre automáticamente según el país.

¿Qué debe incluir?

Nombre del trabajador, cargo, fecha de ingreso, nombre y datos de la empresa, firma del representante autorizado. Opcionalmente el salario si el trámite lo requiere.

🔒¿Mis datos están seguros?

Todo el procesamiento ocurre en tu navegador. Ningún dato se envía a servidores externos. La herramienta funciona completamente en el lado del cliente.

Preguntas Frecuentes

¿El documento tiene validez legal?
El documento generado tiene el formato y estructura correcta. Para tener plena validez legal debe ser impreso, firmado por el responsable autorizado de la empresa y en algunos países sellado. El generador produce el texto; la validez la otorga la firma.
¿Puedo generar una constancia si ya no trabajo allí?
Sí. Si ingresas una fecha de retiro, el documento se ajusta al tiempo verbal pasado indicando el período en que laboró. Sin fecha de retiro, indica que la persona sigue activa.
¿Debo incluir el salario?
Depende del propósito. Para trámites bancarios o visa generalmente se requiere. Para trámites generales o arriendo básico muchas veces no es necesario. Selecciona el tipo "Con salario" si tu trámite lo requiere.
¿Funciona para trabajadores independientes?
Sí. Selecciona el tipo "Independiente" y el documento se adapta para reflejar una declaración de actividad independiente o prestación de servicios.
`;toast('Abriendo diálogo de impresión... Elige "Guardar como PDF"','in');const iframe = document.createElement('iframe'); iframe.style.cssText = 'position:fixed;top:0;left:0;width:0;height:0;border:0;opacity:0;'; document.body.appendChild(iframe);const doc = iframe.contentWindow.document; doc.open(); doc.write(contenido); doc.close();// Esperar a que cargue la fuente antes de imprimir setTimeout(() => { try { iframe.contentWindow.focus(); iframe.contentWindow.print(); } catch(e) { // Fallback: ventana nueva const w = window.open('','_blank','width=900,height=700'); w.document.write(contenido); w.document.close(); } setTimeout(() => document.body.removeChild(iframe), 2000); }, 1200); }// ══════════════════════════════════════════════ // EXPORT WORD // ══════════════════════════════════════════════ function exportWord(){ if(!validar()){ toast('Completa los campos requeridos','er'); return; } const d = getData(); const t = genParrafos(d); const p = PAISES[d.pais]||PAISES.OT; const fE = fmtFecha(d.fechaEm); const loc = [d.ciudad,p.n].filter(Boolean).join(', '); const sub = [d.nit,d.dir,d.tel,d.email].filter(Boolean).join(' · ');const doc = `Constancia Laboral
 

${d.empresa||'EMPRESA'}

${sub?`

${sub}

`:''}

${loc||''}
${fE||''}

${t.titulo}

${t.subtitulo}

${t.p1?`

${t.p1}

`:''} ${t.p2?`

${t.p2}

`:''} ${t.p3?`

${t.p3}

`:''} ${t.p4?`

${t.p4}

`:''}

 

${d.firmante||''}

${d.cfirmante||''}

${d.empresa?`

${d.empresa}

`:''}

Documento generado para fines informativos · Requiere firma del representante autorizado para tener validez legal

`;const blob = new Blob(['\ufeff'+doc],{type:'application/msword;charset=utf-8'}); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'constancia-laboral.doc'; document.body.appendChild(a); a.click(); document.body.removeChild(a); setTimeout(()=>URL.revokeObjectURL(url),2000); toast('¡Documento Word descargado!','ok'); }// ══════════════════════════════════════════════ // COPIAR // ══════════════════════════════════════════════ function copyText(){ const txt = textoPlano(); if(!txt.trim()){ toast('Completa el formulario primero','er'); return; } navigator.clipboard.writeText(txt).then(()=>{ toast('¡Texto copiado al portapapeles!','ok'); }).catch(()=>{ const ta = document.createElement('textarea'); ta.value = txt; ta.style.cssText='position:fixed;opacity:0;top:0;left:0'; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta); toast('¡Texto copiado!','ok'); }); }// ══════════════════════════════════════════════ // LIMPIAR // ══════════════════════════════════════════════ function limpiar(){ ALL.forEach(id=>{ const el=document.getElementById(id); if(el){ el.value=''; el.classList.remove('err'); el.closest('.fld')?.classList.remove('haserr'); } }); document.querySelector('input[name="tipo"][value="basica"]').checked=true; syncPills(); const hoy=new Date().toISOString().split('T')[0]; document.getElementById('f-fecha-emision').value=hoy; localStorage.removeItem('cl_v2'); render(); progress(); toast('Formulario limpiado','in'); }// ══════════════════════════════════════════════ // LOCALSTORAGE // ══════════════════════════════════════════════ function saveLS(){ try{ const d={}; ALL.forEach(id=>{ const el=document.getElementById(id); if(el) d[id]=el.value; }); const r=document.querySelector('input[name="tipo"]:checked'); if(r) d.tipo=r.value; localStorage.setItem('cl_v2',JSON.stringify(d)); }catch(e){} } function restoreLS(){ try{ const raw=localStorage.getItem('cl_v2'); if(!raw) return; const d=JSON.parse(raw); ALL.forEach(id=>{ const el=document.getElementById(id); if(el&&d[id]) el.value=d[id]; }); if(d.tipo){ const r=document.querySelector(`input[name="tipo"][value="${d.tipo}"]`); if(r){ r.checked=true; syncPills(); } } }catch(e){} }// ══════════════════════════════════════════════ // TOAST // ══════════════════════════════════════════════ function toast(msg, tipo='in'){ const ic={ ok:``, er:``, in:`` }; const c=document.getElementById('toasts'); const t=document.createElement('div'); t.className=`toast ${tipo}`; t.innerHTML=(ic[tipo]||'')+`${msg}`; c.appendChild(t); setTimeout(()=>{ t.classList.add('tout'); setTimeout(()=>t.remove(),260); },3000); }// ══════════════════════════════════════════════ // FAQ // ══════════════════════════════════════════════ function toggleFaq(el){ el.closest('.faq-item').classList.toggle('open'); }
Scroll al inicio