import { createFileRoute } from "@tanstack/react-router"; const pageStyles = ` *,*::before,*::after{box-sizing:border-box;margin:0;padding:0} :root{ --bg:#0a0a0a;--surface:#141414;--border:#262626;--text:#fafafa;--muted:#a1a1aa; --primary:#ff5500;--primary-glow:#ff7a33;--gradient:linear-gradient(135deg,#ff5500,#ff7a33); } html{scroll-behavior:smooth} body{font-family:'DM Sans',system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.6} h1,h2,h3,h4{font-family:'Space Grotesk',system-ui,sans-serif;font-weight:700;line-height:1.2} a{color:var(--primary);text-decoration:none} a:hover{text-decoration:underline} img{max-width:100%;height:auto;display:block} .container{max-width:1100px;margin:0 auto;padding:0 1.5rem} nav{position:sticky;top:0;background:rgba(10,10,10,.85);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:100} .nav-inner{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;max-width:1100px;margin:0 auto;flex-wrap:wrap;gap:1rem} .logo{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:1.25rem;background:var(--gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text} .nav-links{display:flex;gap:1.5rem;list-style:none;flex-wrap:wrap} .nav-links a{color:var(--muted);font-size:.95rem} .nav-links a:hover{color:var(--text);text-decoration:none} .breadcrumb{padding:1rem 0;font-size:.85rem;color:var(--muted)} .breadcrumb a{color:var(--muted)} .breadcrumb span{margin:0 .5rem} .hero{padding:4rem 0 5rem;text-align:center;position:relative;overflow:hidden} .hero::before{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:600px;height:600px;background:radial-gradient(circle,rgba(255,85,0,.15),transparent 70%);pointer-events:none} .badge{display:inline-block;padding:.4rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:999px;font-size:.85rem;color:var(--muted);margin-bottom:2rem} .hero h1{font-size:clamp(2.25rem,5vw,3.75rem);margin-bottom:1.25rem} .gradient-text{background:var(--gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text} .hero p.lead{font-size:1.125rem;color:var(--muted);max-width:38rem;margin:0 auto 2.5rem} form.dl-form{display:flex;flex-wrap:wrap;gap:.75rem;max-width:42rem;margin:0 auto;position:relative} form.dl-form input[type=url]{flex:1;min-width:240px;height:3.5rem;padding:0 1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:.75rem;color:var(--text);font-size:1rem;font-family:inherit} form.dl-form input[type=url]:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(255,85,0,.2)} form.dl-form button{height:3.5rem;padding:0 2rem;background:var(--gradient);color:#fff;border:none;border-radius:.75rem;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:1rem;cursor:pointer;box-shadow:0 8px 24px rgba(255,85,0,.35);transition:opacity .2s} form.dl-form button:hover{opacity:.92} .form-note{margin-top:1rem;font-size:.85rem;color:var(--muted)} section{padding:4rem 0} section h2{font-size:clamp(1.75rem,3vw,2.5rem);margin-bottom:1rem;text-align:center} section .sub{color:var(--muted);text-align:center;max-width:40rem;margin:0 auto 3rem} .grid{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))} .card{background:var(--surface);border:1px solid var(--border);border-radius:1rem;padding:1.75rem} .card h3{font-size:1.15rem;margin-bottom:.5rem} .card p{color:var(--muted);font-size:.95rem} .card .num{display:inline-flex;width:2.5rem;height:2.5rem;align-items:center;justify-content:center;background:var(--gradient);border-radius:.6rem;font-weight:700;margin-bottom:1rem;color:#fff} .compare{overflow-x:auto;margin-top:2rem} .compare table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:1rem;overflow:hidden;border:1px solid var(--border)} .compare th,.compare td{padding:1rem 1.25rem;text-align:left;border-bottom:1px solid var(--border);font-size:.95rem} .compare th{background:#1c1c1c;font-family:'Space Grotesk',sans-serif;color:var(--text)} .compare td:first-child{font-weight:500} .compare .yes{color:#4ade80;font-weight:600} .compare .no{color:#ef4444} .long-content{max-width:48rem;margin:0 auto} .long-content h3{margin-top:2rem;margin-bottom:.75rem;font-size:1.35rem} .long-content p{color:var(--muted);margin-bottom:1rem} .long-content ul{color:var(--muted);margin:1rem 0 1rem 1.5rem} .long-content li{margin-bottom:.4rem} .faq details{background:var(--surface);border:1px solid var(--border);border-radius:.75rem;margin-bottom:.75rem;padding:1.25rem 1.5rem} .faq summary{cursor:pointer;font-weight:500;font-family:'Space Grotesk',sans-serif;list-style:none;display:flex;justify-content:space-between;align-items:center} .faq summary::after{content:'+';color:var(--primary);font-size:1.5rem;font-weight:300} .faq details[open] summary::after{content:'\\u2212'} .faq details p{color:var(--muted);margin-top:.75rem} .tools-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))} .tools-grid a{display:block;padding:1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:.75rem;color:var(--text);text-align:center} .tools-grid a:hover{border-color:var(--primary);text-decoration:none} .tools-grid a span{display:block;color:var(--muted);font-size:.8rem;margin-top:.25rem} footer{background:var(--surface);border-top:1px solid var(--border);padding:3rem 0 2rem;margin-top:4rem} .footer-inner{display:flex;flex-wrap:wrap;gap:2rem;justify-content:space-between;align-items:flex-start} .footer-col h4{margin-bottom:1rem;font-size:1rem} .footer-col p{color:var(--muted);font-size:.9rem;max-width:18rem} .footer-links{display:flex;flex-direction:column;gap:.6rem} .footer-links a{color:var(--muted);font-size:.9rem} .footer-bottom{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border);text-align:center;color:var(--muted);font-size:.85rem} @media (max-width:600px){ .hero{padding:3rem 0 4rem} section{padding:3rem 0} .nav-links{gap:.9rem} .nav-links a{font-size:.85rem} } `; export const Route = createFileRoute("/")({ head: () => ({ meta: [ { title: "SoundCloud to MP3 Downloader - Free SoundCloud MP3 Converter" }, { name: "description", content: "Free SoundCloud downloader. Convert SoundCloud songs to MP3 in seconds. Restricted tracks fall back to YouTube via RapidAPI. No signup, no JavaScript required.", }, { name: "keywords", content: "soundcloud to mp3, download soundcloud songs, soundcloud mp3 converter, free soundcloud downloader, rapidapi youtube mp3", }, { property: "og:type", content: "website" }, { property: "og:title", content: "SoundCloud to MP3 Downloader - Free MP3 Converter" }, { property: "og:description", content: "Convert SoundCloud songs to MP3 in seconds. YouTube fallback powered by RapidAPI. Free, fast, no signup.", }, { property: "og:url", content: "/" }, { name: "twitter:card", content: "summary_large_image" }, { name: "twitter:title", content: "SoundCloud to MP3 Downloader - Free" }, { name: "twitter:description", content: "Convert SoundCloud songs to MP3 instantly. RapidAPI fallback for restricted tracks.", }, ], links: [ { rel: "canonical", href: "/" }, { rel: "preconnect", href: "https://fonts.googleapis.com" }, { rel: "preconnect", href: "https://fonts.gstatic.com", crossOrigin: "anonymous" }, { rel: "stylesheet", href: "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;700&family=DM+Sans:wght@400;500&display=swap", }, ], scripts: [ { type: "application/ld+json", children: JSON.stringify({ "@context": "https://schema.org", "@type": "WebApplication", name: "SoundCloud to MP3 Downloader", description: "Free online tool to convert SoundCloud songs to MP3 with RapidAPI YouTube fallback.", applicationCategory: "MultimediaApplication", operatingSystem: "Any", offers: { "@type": "Offer", price: "0", priceCurrency: "USD" }, }), }, { type: "application/ld+json", children: JSON.stringify({ "@context": "https://schema.org", "@type": "FAQPage", mainEntity: [ { "@type": "Question", name: "Is this SoundCloud downloader free?", acceptedAnswer: { "@type": "Answer", text: "Yes, our SoundCloud to MP3 converter is 100% free with no signup required.", }, }, { "@type": "Question", name: "Do I need JavaScript to download SoundCloud songs?", acceptedAnswer: { "@type": "Answer", text: "No. This tool works with pure HTML - no JavaScript required.", }, }, { "@type": "Question", name: "What audio quality do I get?", acceptedAnswer: { "@type": "Answer", text: "You get high-quality 128kbps MP3 files, the maximum quality SoundCloud streams publicly.", }, }, { "@type": "Question", name: "Is it legal to download SoundCloud songs?", acceptedAnswer: { "@type": "Answer", text: "Downloading is legal for personal use of tracks where the artist has enabled public streaming.", }, }, ], }), }, ], }), component: Index, }); function Index() { return ( <>