Conversor de SVG para React JSX

    Converta código SVG em componentes React JSX prontos para produção. Ajusta atributos para camelCase e remove elementos desnecessários com rapidez.

    Entrada SVG

    Arraste ou clique para enviar um arquivo SVG

    ou cole o código diretamente

    Saída JSX

    Opções de Conversão

    Adicionar definições de interface
    Envolver componente com memo
    Utilizar aspas duplas nos atributos
    Remover atributos id

    Permanece no seu dispositivo. Todo o processamento acontece no seu navegador. Seus textos nunca são enviados aos nossos servidores.

    Como usar

    Siga estes passos simples para obter os melhores resultados.

    1Cole o código SVG bruto aqui. Seja uma exportação do Figma, Illustrator ou pacote de ícones, basta colar ou arrastar o arquivo.
    2Validamos o arquivo instantaneamente. Se a marcação for válida, você verá uma etiqueta 'SVG Válido'.
    3Ajuste as opções de saída: ative TypeScript para arquivos .tsx, envolva com React.memo para desempenho ou remova IDs duplicados.
    4Analise o JSX gerado. Convertemos atributos de kebab-case para camelCase e estruturamos um componente React limpo e reutilizável.
    5Copie e use no projeto. Copie o código gerado para seu editor. Use Redefinir para converter novos ícones.

    Perguntas frequentes

    Tire suas dúvidas sobre o funcionamento desta ferramenta.

    O React não utiliza HTML puro, mas sim JSX. Em JSX, atributos com hífens como stroke-width devem ser escritos em camelCase (strokeWidth), o atributo 'class' deve ser 'className' e estilos inline devem ser objetos JavaScript e não strings. Colar SVGs brutos causa erros de compilação ou dezenas de avisos no console.

    Convertemos atributos com hífens para camelCase (ex.: fill-opacity vira fillOpacity, stroke-linecap vira strokeLinecap), transformamos 'class' em 'className', convertemos estilos embutidos em objetos e limpamos tags XML desnecessárias como xmlns.

    Ela tipa o componente com a interface React.SVGProps<SVGSVGElement>, oferecendo autocompletar e validação estrita de tipos para width, height, fill e manipuladores de eventos sem configuração manual.

    Recomendado para ícones reutilizados frequentemente na interface. O React.memo evita renderizações desnecessárias quando as propriedades não mudam, otimizando o desempenho em tabelas e listas extensas.

    Softwares gráficos como o Figma criam identificadores genéricos como id='a' em máscaras e gradientes. Ao reutilizar o mesmo ícone várias vezes na mesma página, esses IDs colidem e distorcem os gráficos. Remover IDs resolve o conflito.

    Basta salvar o código em um arquivo (ex.: MyIcon.tsx) e importá-lo no seu componente. Como incluímos {...props}, você pode customizar tamanho e classes dinamicamente: <MyIcon width={24} fill="currentColor" className="my-icon" />.

    Ao utilizar fill='currentColor', o SVG herda a cor do texto do elemento pai. Se você definir color: blue no elemento container, o ícone adotará essa cor automaticamente.

    Como funciona?

    Entenda a metodologia, fórmulas e conceitos por trás desta ferramenta.

    Transforme Seus Vetores em Componentes React Prontos para Produção

    Designers adoram SVGs, mas desenvolvedores enfrentam dificuldades ao importá-los para o React. As exportações do Figma e Adobe XD trazem atributos incompatíveis com a sintaxe JSX. Nosso conversor de SVG para React JSX é uma ferramenta gratuita no navegador que limpa, formata e transforma gráficos vetoriais em componentes React tipados e reutilizáveis em segundos.

    Por Que SVGs Brutos Constantemente Quebram Seu Build do React

    O JSX do React baseia-se em JavaScript e segue suas convenções sintáticas. Isso gera divergências ao colar SVGs tradicionais:

    Kebab-Case vs. CamelCase: SVGs usam hifens (stroke-width, fill-opacity). Como o JavaScript não permite hifens em nomes de propriedades, o React exige strokeWidth e fillOpacity.

    O Conflito de "class": class é uma palavra reservada no JavaScript. O React exige o uso de className para atribuição de classes CSS.

    Estilos Inline como Strings: SVGs brutos declaram estilos em texto como style="fill: blue". O React requer objetos JavaScript: style={{ fill: 'blue' }}.

    Namespaces Desnecessários: Exportações gráficas trazem atributos como xmlns e xmlns:xlink que são supérfluos dentro de aplicações React modernas.

    IDs Duplicados: Gradientes com IDs genéricos (id="a") geram conflitos no DOM quando o mesmo ícone é renderizado repetidas vezes na mesma página.

    O Que Você Recebe: Um Componente Limpo e Moderno

    Geramos componentes estruturados segundo as boas práticas do ecossistema:

    JSX
    import React from "react"; const SvgIcon = React.memo( (props: React.SVGProps<SVGSVGElement>) => ( <svg xmlns="http://www.w3.org/2000/svg" width="400" height="300" viewBox="0 0 400 300" {...props} > <rect width="100%" height="100%" fill="#f8f8f8" /> <path fill="#31343C" d="M112.215 126.065v34.4h-8.38..." /> </svg> ) ); export default SvgIcon;

    A propagação {...props} permite que você ajuste tamanho, cor ou propriedades adicionais a partir do componente pai sem precisar editar o SVG novamente.

    Dica Profissional: Construindo um Sistema de Ícones Escalável

    Para montar uma biblioteca padronizada de ícones:

    1. Converta os arquivos ativando as opções TypeScript e React Memo.
    2. Guarde cada ícone em seu próprio arquivo na pasta components/icons.
    3. Substitua cores fixas por "currentColor".
    4. Exporte todos através de um arquivo index.ts central.

    Com fill="currentColor", a cor do ícone responde diretamente ao tema CSS do aplicativo, inclusive no modo escuro.

    Para Quem Esta Ferramenta Foi Criada?

    Desenvolvedores Frontend que buscam agilidade na inclusão de ícones sem ter que renomear atributos manualmente.

    Engenheiros de Design Systems que precisam padronizar centenas de ativos vetoriais em pacotes de componentes com tipagem estrita.

    Desenvolvedores Full-Stack que buscam uma solução confiável e imediata para seus arquivos vetoriais.

    Seu Código Permanece Seu

    Privacidade em primeiro lugar: todo o processamento roda localmente no seu próprio navegador. Seus códigos e ilustrações proprietárias nunca saem da sua máquina.

    Última atualização:

    Explore outras calculadoras e utilitários para acelerar seu trabalho.