<!doctype html>
<html lang="en" prefix="og: https://ogp.me/ns#">
  <head>
    <!-- Cache Control -->
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">

    <!-- Preconnect -->
    <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>
    <link rel="preconnect" href="https://a.basemaps.cartocdn.com" crossorigin>

    <!-- Basic Meta -->
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
    <title>Jakarta Transit | Live KRL Commuter Line Map & Real-Time Train Tracker</title>
    <meta name="description" content="Track KRL Commuter Line trains live on an interactive map of Jakarta (Jabodetabek). Real-time positions and arrivals for the Bogor, Cikarang, Rangkasbitung, Tangerang and Tanjung Priok lines. Free, instant, no app needed.">
    <meta name="keywords" content="KRL, Commuter Line, Jakarta, Jabodetabek, live train tracker, real time arrivals, KRL live map, Bogor Line, Cikarang Line, Rangkasbitung Line, Tangerang Line, Tanjung Priok Line, KAI Commuter, jadwal KRL, kereta commuter, Manggarai, Tanah Abang, Jakarta Kota, KRL schedule, KRL fare">
    <meta name="author" content="Jakarta Transit">
    <link rel="canonical" href="https://krljakarta.com/">

    <!-- Geo targeting for Jakarta -->
    <meta name="geo.region" content="ID-JK">
    <meta name="geo.placename" content="Jakarta">
    <meta name="geo.position" content="-6.2088;106.8456">
    <meta name="ICBM" content="-6.2088, 106.8456">

    <!-- Robots -->
    <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1">
    <meta name="googlebot" content="index, follow">

    <!-- Favicon / Icons -->
    <link rel="icon" type="image/x-icon" href="/favicon.ico">
    <link rel="icon" type="image/png" sizes="192x192" href="/icon-192.png">
    <link rel="apple-touch-icon" sizes="192x192" href="/icon-192.png">
    <link rel="manifest" href="/manifest.json">

    <!-- Open Graph -->
    <meta property="og:title" content="Jakarta Transit | Live KRL Commuter Line Map & Real-Time Tracker">
    <meta property="og:description" content="Watch every KRL Commuter Line train move across Jabodetabek in real time. Live arrivals and positions for the Bogor, Cikarang, Rangkasbitung, Tangerang and Tanjung Priok lines.">
    <meta property="og:type" content="website">
    <meta property="og:url" content="https://krljakarta.com">
    <meta property="og:image" content="https://krljakarta.com/og-image.jpg">
    <meta property="og:image:width" content="1200">
    <meta property="og:image:height" content="630">
    <meta property="og:image:alt" content="Jakarta Transit live map showing KRL Commuter Line train positions across Jabodetabek">
    <meta property="og:locale" content="en_US">
    <meta property="og:locale:alternate" content="id_ID">
    <meta property="og:site_name" content="Jakarta Transit">

    <!-- Twitter Card -->
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:title" content="Jakarta Transit | Live KRL Commuter Line Map">
    <meta name="twitter:description" content="Track every KRL Commuter Line train in real time. Live arrivals and positions for all Jabodetabek lines. Free, no app needed.">
    <meta name="twitter:image" content="https://krljakarta.com/og-image.jpg">

    <!-- PWA / Mobile -->
    <meta name="theme-color" content="#DD0067">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-title" content="Jakarta Transit">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="application-name" content="Jakarta Transit">

    <!-- Structured Data: WebApplication -->
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "WebApplication",
      "name": "Jakarta Transit",
      "alternateName": ["KRL Live Tracker", "Jakarta KRL Map", "Commuter Line Live"],
      "url": "https://krljakarta.com",
      "description": "Track KRL Commuter Line trains in real time on a live map. Positions, arrivals and schedules for the Bogor, Cikarang, Rangkasbitung, Tangerang and Tanjung Priok lines across Jabodetabek.",
      "applicationCategory": "TravelApplication",
      "operatingSystem": "Web",
      "browserRequirements": "Requires JavaScript",
      "offers": { "@type": "Offer", "price": "0", "priceCurrency": "IDR" },
      "areaServed": {
        "@type": "City",
        "name": "Jakarta",
        "sameAs": "https://en.wikipedia.org/wiki/Jakarta"
      },
      "inLanguage": ["en", "id"],
      "author": { "@type": "Organization", "name": "Jakarta Transit", "url": "https://krljakarta.com" }
    }
    </script>

    <!-- Structured Data: FAQ -->
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "How much does the KRL Commuter Line cost in Jakarta?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "KRL Commuter Line fares are distance-based: Rp3,000 for the first 25 km, then Rp1,000 for each additional 10 km. Most trips across Jabodetabek cost between Rp3,000 and Rp7,000."
          }
        },
        {
          "@type": "Question",
          "name": "What are the KRL Commuter Line operating hours?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "KRL Commuter Line trains run daily from around 04:00 to 24:00. Frequency is roughly every 5 to 15 minutes depending on the line and time of day."
          }
        },
        {
          "@type": "Question",
          "name": "How can I track KRL trains in real time?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Jakarta Transit shows live KRL Commuter Line train positions on an interactive map, with arrival times for every station, updated continuously and with no app download needed."
          }
        },
        {
          "@type": "Question",
          "name": "How do I pay for the KRL Commuter Line?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "You can pay with a Kartu Multi Trip (KMT), a bank e-money card (e.g. e-Money, Flazz, Brizzi, TapCash), or the KAI Commuter mobile app QR ticket."
          }
        }
      ]
    }
    </script>
    <script type="module" crossorigin src="/assets/index-BS6t0fbg.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-JPPgz6M2.css">
  </head>

  <body>
    <div id="root"></div>

    <!-- SEO: content fallback for crawlers without JavaScript -->
    <noscript>
      <div style="max-width:800px;margin:0 auto;padding:20px;font-family:sans-serif">
        <h1>Jakarta Transit - Live KRL Commuter Line Map &amp; Real-Time Train Tracker</h1>
        <p>Track KRL Commuter Line trains live on an interactive map of Jakarta and the wider Jabodetabek area. See real-time arrival times and train positions for every station on the Bogor, Cikarang, Rangkasbitung, Tangerang and Tanjung Priok lines.</p>

        <h2>KRL Commuter Lines (Jabodetabek)</h2>
        <ul>
          <li><strong>Bogor Line</strong> - Jakarta Kota / Angke to Bogor and Nambo, via Manggarai and Depok</li>
          <li><strong>Cikarang Line</strong> - Kampung Bandan / Angke to Cikarang, via Manggarai and Bekasi (loop line)</li>
          <li><strong>Rangkasbitung Line</strong> - Tanah Abang to Rangkasbitung, via Serpong and Parung Panjang</li>
          <li><strong>Tangerang Line</strong> - Duri to Tangerang</li>
          <li><strong>Tanjung Priok Line</strong> - Jakarta Kota to Tanjung Priok</li>
        </ul>

        <h2>KRL Fares</h2>
        <p>Distance-based pricing: Rp3,000 for the first 25 km, then Rp1,000 for every additional 10 km. Pay with a Kartu Multi Trip (KMT) or a supported bank e-money card.</p>

        <h2>Operating Hours</h2>
        <p>KRL Commuter Line trains run daily from approximately 04:00 to 24:00, roughly every 5 to 15 minutes depending on the line and time of day.</p>

        <p><a href="https://krljakarta.com">Open the Jakarta Transit Live Map</a></p>
      </div>
    </noscript>
  </body>
</html>
