www.thetrainline.com Open in urlscan Pro
65.9.95.129  Public Scan

Submitted URL: https://ablink.comms.trainline.com/uni/ls/click?upn=d3upUQrHJqbOXpRt8-2FDPfRWiK1Oz3d3XLi0EQc1HMHTDP2RTS8vSlavDJ4OFDRC0rYdNn7tKQUW9m...
Effective URL: https://www.thetrainline.com/?lid=ue4klvjszv1f&utm_source=braze&utm_medium=email&utm_campaign=tll_canvas_email_24Q412_uk_Othe...
Submission: On December 09 via manual from GB — Scanned from GB

Form analysis 3 forms found in the DOM

POST

<form data-testid="register-email-form" class="Register-module__containerHidden__xzfcl" method="post" novalidate="" autocomplete="on">
  <div class="RegisterEmailForm-module__nameFieldsContainer__8chhH">
    <div data-testid="formfield-container" class="FormField-module__root__EGOs3 RegisterEmailForm-module__formFieldContainer__pfV9y">
      <div class="FormField-module__rowLabels__Aqdo2"><label class="Typography-module__root__85yXE Typography-module__base__zoFlE typography-module__small__n1OLZ FormField-module__label__X+8Xo" data-testid="typography" for="register-first-name">First
          name</label></div>
      <div class="FormField-module__inputContainer__vBKwv" data-testid="formfield-inputcontainer"><input aria-invalid="false" aria-errormessage="" aria-describedby="formfield-errormessage-register-first-name"
          class="FormField-module__input__ZhxUK typography-module__body__5ne13" data-testid="formfield" type="text" id="register-first-name" name="first-name" autocomplete="given-name" required="" value=""></div>
    </div>
    <div data-testid="formfield-container" class="FormField-module__root__EGOs3 RegisterEmailForm-module__formFieldContainer__pfV9y">
      <div class="FormField-module__rowLabels__Aqdo2"><label class="Typography-module__root__85yXE Typography-module__base__zoFlE typography-module__small__n1OLZ FormField-module__label__X+8Xo" data-testid="typography" for="register-last-name">Last
          name</label></div>
      <div class="FormField-module__inputContainer__vBKwv" data-testid="formfield-inputcontainer"><input aria-invalid="false" aria-errormessage="" aria-describedby="formfield-errormessage-register-last-name"
          class="FormField-module__input__ZhxUK typography-module__body__5ne13" data-testid="formfield" type="text" id="register-last-name" name="last-name" autocomplete="family-name" required="" value=""></div>
    </div>
  </div>
  <div data-testid="formfield-container" class="FormField-module__root__EGOs3 RegisterEmailForm-module__formFieldContainer__pfV9y">
    <div class="FormField-module__rowLabels__Aqdo2"><label class="Typography-module__root__85yXE Typography-module__base__zoFlE typography-module__small__n1OLZ FormField-module__label__X+8Xo" data-testid="typography"
        for="register-email">Email</label></div>
    <div class="FormField-module__inputContainer__vBKwv" data-testid="formfield-inputcontainer"><input aria-invalid="false" aria-errormessage="" aria-describedby="formfield-errormessage-register-email"
        class="FormField-module__input__ZhxUK typography-module__body__5ne13" data-testid="formfield" type="email" id="register-email" autocomplete="off" required="" value=""></div>
  </div>
  <div data-testid="suggestion-container" class="SuggestEmail-module__suggestionContainer__knAh0 SuggestEmail-module__suggestionContainerHidden__6Ll7q"><span
      class="Typography-module__root__85yXE Typography-module__subdued__dKN2J typography-module__micro__2-I37" data-testid="typography">Did you mean ?</span><span
      class="Typography-module__root__85yXE Typography-module__subdued__dKN2J typography-module__micro__2-I37 SuggestEmail-module__textSuggestion__RkRej" data-testid="suggestion">Replace</span></div>
  <div data-testid="formfield-container-secure-password" class="FormField-module__root__EGOs3 RegisterEmailForm-module__formFieldContainer__pfV9y">
    <div class="FormField-module__rowLabels__Aqdo2"><label class="Typography-module__root__85yXE Typography-module__base__zoFlE typography-module__small__n1OLZ FormField-module__label__X+8Xo" data-testid="typography"
        for="register-password">Password</label>
      <div data-testid="secure-pwd-info-tooltip" class="FormField-module__securePwdTooltip__QA1Rk">
        <script data-testid="@trainline-shareable/secure-password-messages-script" type="text/javascript">
          window.translations = window.translations || {};
          window.translations["@trainline-shareable/secure-password"] = {
            locale: "en-GB",
            messages: {
              "securePassword.infoTooltip.header": "Strong password?",
              "securePassword.infoTooltip.openingParagraph": "To keep you safe, your password has to be strong.",
              "securePassword.infoTooltip.requirementsList": "[\"Uses at least 8 characters (including one number or symbol)\", \"Uses uppercase and lowercase letters\", \"Doesn’t match any of your old passwords (even on other sites)\", \"Doesn’t use anything too obvious (like your date of birth)\"]",
              "securePassword.validationMessage.invalidChecks": "Not valid",
              "securePassword.validationMessage.passwordMissing": "Please enter a password",
              "securePassword.validationMessage.passwordTooLong": "Cannot be more than {PASSWORD_MAX_LENGTH} characters",
              "securePassword.validationMessage.passwordsDoNotMatch": "Passwords do not match",
              "securePassword.weak": "weak",
              "securePassword.moderate": "moderate",
              "securePassword.strong": "strong",
              "securePassword.passwordStrengthTitle": "Password strength:",
              "securePassword.passwordCondition.hasLengthOver8": "At least 8 characters",
              "securePassword.passwordCondition.hasLowercase": "Have at least one lowercase letter",
              "securePassword.passwordCondition.hasUppercase": "Have at least one uppercase letter",
              "securePassword.passwordCondition.hasNumSym": "Have at least one number or symbol"
            },
          };
        </script><button class="Button-module__root__+zWHc Button-module__large__e+txh typography-module__large__YQAsJ Button-module__ghost__7vzNw SecurePasswordTooltip-module__infoButton__V1v7a" data-testid="button" type="button"
          aria-haspopup="dialog"><svg data-testid="info-icon" fill="currentColor" viewBox="0 0 24 24" height="24px" width="24px" role="img" id="Info">
            <title>Info</title>
            <desc>Info</desc>
            <path d="M12.75 16.5C12.75 16.914 12.414 17.25 12 17.25C11.586 17.25 11.25 16.914 11.25 16.5V11.25C11.25 10.836 11.586 10.5 12 10.5C12.414 10.5 12.75 10.836 12.75 11.25V16.5Z"></path>
            <path d="M12 7.40625C12.4657 7.40625 12.8438 7.78425 12.8438 8.25C12.8438 8.71575 12.4657 9.09375 12 9.09375C11.5343 9.09375 11.1562 8.71575 11.1562 8.25C11.1562 7.78425 11.5343 7.40625 12 7.40625Z"></path>
            <path
              d="M12 21.75C17.3842 21.75 21.75 17.3842 21.75 12C21.75 6.61575 17.3842 2.25 12 2.25C6.61575 2.25 2.25 6.61575 2.25 12C2.25 17.3842 6.61575 21.75 12 21.75ZM12 3.75C16.5562 3.75 20.25 7.44375 20.25 12C20.25 16.5562 16.5562 20.25 12 20.25C7.44375 20.25 3.75 16.5562 3.75 12C3.75 7.44375 7.44375 3.75 12 3.75Z">
            </path>
          </svg></button>
      </div>
    </div>
    <div class="FormField-module__inputContainer__vBKwv" data-testid="formfield-inputcontainer"><input aria-invalid="false" aria-errormessage="" aria-describedby="formfield-errormessage-register-password"
        class="FormField-module__input__ZhxUK typography-module__body__5ne13" data-testid="formfield" type="password" id="register-password" autocomplete="new-password" required="" minlength="8" value=""><button
        class="Button-module__root__+zWHc Button-module__small__0pjfa typography-module__small__n1OLZ Button-module__ghost__7vzNw TogglePasswordVisibility-module__root__ODXX-" data-testid="formfield-togglevisibility" type="button"
        aria-label="Show password">SHOW</button></div>
  </div>
  <div data-testid="secure-password-checks" class="RegisterEmailForm-module__securePwdChecks__kis6n">
    <script data-testid="@trainline-shareable/secure-password-messages-script" type="text/javascript">
      window.translations = window.translations || {};
      window.translations["@trainline-shareable/secure-password"] = {
        locale: "en-GB",
        messages: {
          "securePassword.infoTooltip.header": "Strong password?",
          "securePassword.infoTooltip.openingParagraph": "To keep you safe, your password has to be strong.",
          "securePassword.infoTooltip.requirementsList": "[\"Uses at least 8 characters (including one number or symbol)\", \"Uses uppercase and lowercase letters\", \"Doesn’t match any of your old passwords (even on other sites)\", \"Doesn’t use anything too obvious (like your date of birth)\"]",
          "securePassword.validationMessage.invalidChecks": "Not valid",
          "securePassword.validationMessage.passwordMissing": "Please enter a password",
          "securePassword.validationMessage.passwordTooLong": "Cannot be more than {PASSWORD_MAX_LENGTH} characters",
          "securePassword.validationMessage.passwordsDoNotMatch": "Passwords do not match",
          "securePassword.weak": "weak",
          "securePassword.moderate": "moderate",
          "securePassword.strong": "strong",
          "securePassword.passwordStrengthTitle": "Password strength:",
          "securePassword.passwordCondition.hasLengthOver8": "At least 8 characters",
          "securePassword.passwordCondition.hasLowercase": "Have at least one lowercase letter",
          "securePassword.passwordCondition.hasUppercase": "Have at least one uppercase letter",
          "securePassword.passwordCondition.hasNumSym": "Have at least one number or symbol"
        },
      };
    </script>
    <p class="Typography-module__root__85yXE Typography-module__base__zoFlE typography-module__small__n1OLZ SecurePasswordStrength-module__strengthLevel__CM4eq" data-testid="typography"><span>Password strength:</span> <span
        data-testid="strength-level" class="SecurePasswordStrength-module__weak__3fMf4"><span>weak</span></span></p>
    <div class="SecurePasswordStrength-module__container__lbyRW">
      <p class="Typography-module__root__85yXE Typography-module__base__zoFlE typography-module__small__n1OLZ SecurePasswordStrength-module__passwordCondition__0Iv9m SecurePasswordStrength-module__untouched__HvJb8" data-testid="password-condition">
        <svg data-testid="icon-minus" fill="currentColor" viewBox="0 0 24 24" height="24px" width="24px" role="img" id="Minus">
          <title>Minus</title>
          <desc>Minus</desc>
          <path d="M5.25 12.75C4.836 12.75 4.5 12.414 4.5 12C4.5 11.586 4.836 11.25 5.25 11.25H18.75C19.164 11.25 19.5 11.586 19.5 12C19.5 12.414 19.164 12.75 18.75 12.75H5.25Z"></path>
        </svg><span>At least 8 characters</span></p>
      <p class="Typography-module__root__85yXE Typography-module__base__zoFlE typography-module__small__n1OLZ SecurePasswordStrength-module__passwordCondition__0Iv9m SecurePasswordStrength-module__untouched__HvJb8" data-testid="password-condition">
        <svg data-testid="icon-minus" fill="currentColor" viewBox="0 0 24 24" height="24px" width="24px" role="img" id="Minus">
          <title>Minus</title>
          <desc>Minus</desc>
          <path d="M5.25 12.75C4.836 12.75 4.5 12.414 4.5 12C4.5 11.586 4.836 11.25 5.25 11.25H18.75C19.164 11.25 19.5 11.586 19.5 12C19.5 12.414 19.164 12.75 18.75 12.75H5.25Z"></path>
        </svg><span>Have at least one lowercase letter</span></p>
      <p class="Typography-module__root__85yXE Typography-module__base__zoFlE typography-module__small__n1OLZ SecurePasswordStrength-module__passwordCondition__0Iv9m SecurePasswordStrength-module__untouched__HvJb8" data-testid="password-condition">
        <svg data-testid="icon-minus" fill="currentColor" viewBox="0 0 24 24" height="24px" width="24px" role="img" id="Minus">
          <title>Minus</title>
          <desc>Minus</desc>
          <path d="M5.25 12.75C4.836 12.75 4.5 12.414 4.5 12C4.5 11.586 4.836 11.25 5.25 11.25H18.75C19.164 11.25 19.5 11.586 19.5 12C19.5 12.414 19.164 12.75 18.75 12.75H5.25Z"></path>
        </svg><span>Have at least one uppercase letter</span></p>
      <p class="Typography-module__root__85yXE Typography-module__base__zoFlE typography-module__small__n1OLZ SecurePasswordStrength-module__passwordCondition__0Iv9m SecurePasswordStrength-module__untouched__HvJb8" data-testid="password-condition">
        <svg data-testid="icon-minus" fill="currentColor" viewBox="0 0 24 24" height="24px" width="24px" role="img" id="Minus">
          <title>Minus</title>
          <desc>Minus</desc>
          <path d="M5.25 12.75C4.836 12.75 4.5 12.414 4.5 12C4.5 11.586 4.836 11.25 5.25 11.25H18.75C19.164 11.25 19.5 11.586 19.5 12C19.5 12.414 19.164 12.75 18.75 12.75H5.25Z"></path>
        </svg><span>Have at least one number or symbol</span></p>
    </div>
  </div><button class="Button-module__root__+zWHc Button-module__large__e+txh typography-module__large__YQAsJ Button-module__secondary1__bME+e Button-module__fullWidth__3cQHI" data-testid="register-submission" type="submit">Register</button>
</form>

POST

<form method="post" novalidate="" autocomplete="on" data-testid="signIn-email-form">
  <div data-testid="formfield-container" class="FormField-module__root__EGOs3 SignInEmailForm-module__formFieldContainer__l0Wzi">
    <div class="FormField-module__rowLabels__Aqdo2"><label class="Typography-module__root__85yXE Typography-module__base__zoFlE typography-module__small__n1OLZ FormField-module__label__X+8Xo" data-testid="typography" for="signin-email">Email</label>
    </div>
    <div class="FormField-module__inputContainer__vBKwv" data-testid="formfield-inputcontainer"><input aria-invalid="false" aria-errormessage="" aria-describedby="formfield-errormessage-signin-email"
        class="FormField-module__input__ZhxUK typography-module__body__5ne13" data-testid="signIn-email-field" type="email" id="signin-email" name="email" autocomplete="email" required="" value=""></div>
  </div>
  <div data-testid="formfield-container" class="FormField-module__root__EGOs3 SignInEmailForm-module__formFieldContainer__l0Wzi">
    <div class="FormField-module__rowLabels__Aqdo2"><label class="Typography-module__root__85yXE Typography-module__base__zoFlE typography-module__small__n1OLZ FormField-module__label__X+8Xo" data-testid="typography"
        for="signin-password">Password</label><span
        class="FormField-module__secondaryLabel__jTAcY"><a class="Typography-module__root__85yXE Typography-module__base__zoFlE typography-module__small__n1OLZ TextLink-module__root__B79Cg SignInEmailForm-module__secondaryLabel__sQapk TextLink-module__defaultColor__G65XG" data-testid="text-link" href="https://www.thetrainline.com/my-account/forgot-password" target="_blank">Forgotten password?</a></span>
    </div>
    <div class="FormField-module__inputContainer__vBKwv" data-testid="formfield-inputcontainer"><input aria-invalid="false" aria-errormessage="" aria-describedby="formfield-errormessage-signin-password"
        class="FormField-module__input__ZhxUK typography-module__body__5ne13" data-testid="signIn-password-field" type="password" id="signin-password" name="password" autocomplete="password" required="" minlength="6" value=""><button
        class="Button-module__root__+zWHc Button-module__small__0pjfa typography-module__small__n1OLZ Button-module__ghost__7vzNw TogglePasswordVisibility-module__root__ODXX-" data-testid="formfield-togglevisibility" type="button"
        aria-label="Show password">SHOW</button></div>
  </div><button class="Button-module__root__+zWHc Button-module__large__e+txh typography-module__large__YQAsJ Button-module__secondary1__bME+e Button-module__fullWidth__3cQHI" data-testid="signIn-submission" type="submit">Sign in</button>
</form>

<form class="_18zyg41" autocomplete="off" data-test="ExtendedSearch">
  <div class="_srth6h"><span id="init_instructions" class="_1u9fru1">When results are available use up and down arrows to review and enter to select.Touch device users, explore by touch or with swipe gestures.</span>
    <div class="_e296pg" data-test="horizontal-from-station-field">
      <div class="_brbxtg"><label for="from.search_2023-12-09T06" class="_192ldynNaN">
          <div class="_1bt47nxb"><span>From</span></div>
          <div class="_171ou9l1">
            <div class="_e296pg"><input type="text" aria-label="Departure station, none selected. Select a station." aria-describedby="" aria-errormessage="" aria-owns="stations_from" aria-expanded="false" aria-autocomplete="both"
                aria-invalid="false" role="combobox" name="from.search_2023-12-09T06" id="from.search_2023-12-09T06" value="" placeholder="Enter origin station..." class="_wy01k7NaN" autocorrect="off" autocomplete="off" spellcheck="false"
                data-test="from-station-input" inputmode="text"></div>
          </div>
        </label></div>
    </div>
    <div class="_e296pg" data-test="horizontal-to-station-field">
      <div class="_brbxtg"><label for="to.search_2023-12-09T06" class="_192ldynNaN">
          <div class="_1bt47nxb"><span>To</span></div>
          <div class="_171ou9l1">
            <div class="_e296pg"><input type="text" aria-label="Arrival station, none selected. Select a station." aria-describedby="" aria-errormessage="" aria-owns="stations_to" aria-expanded="false" aria-autocomplete="both" aria-invalid="false"
                role="combobox" name="to.search_2023-12-09T06" id="to.search_2023-12-09T06" value="" placeholder="Enter destination station..." class="_wy01k7NaN" autocorrect="off" autocomplete="off" spellcheck="false" data-test="to-station-input"
                inputmode="text"></div>
          </div>
        </label></div>
    </div>
  </div>
  <div class="_wgmchy" data-test="via-avoid-default-UI">
    <div class="_7es7e9"><label for="viaAvoidCheckbox" class="_qcdqt8y"><input type="checkbox" id="viaAvoidCheckbox" name="viaAvoidCheckbox" class="_17zd02gj" tabindex="0"><span class="_pimoq6" data-test="checkbox-innerLabel">
          <div class="_ow0r9r" data-test="via-avoid-toggle-icon"><svg viewBox="0 0 160 160" width="16px" height="16px" class="_3642g5">
              <polygon fill="none" stroke="currentColor" points="75,75.1 75,75 22.8,75.1 11.8,87.8 22.8,100.1 75.1,100 75.1,100 75.1,100 80.2,100 85.1,100 85.1,100 85.1,100 120.1,100.1 120.1,75.1 85,75.1 "></polygon>
              <polygon fill="none" stroke="currentColor" points="85.1,20 75.1,20 75.1,20 40.1,20 40.1,45 75.1,45 85.1,45 85.1,45 136.9,45 148.1,32.3 137.2,19.9 "></polygon>
              <path fill="currentColor" stroke="currentColor"
                d="M158.6,29l-15.5-17.5c-1-1-2.3-1.6-3.7-1.6L85.1,10V4.7c0-1.3-0.5-2.3-1.5-3.3c-1-0.9-1.9-1.4-3.3-1.4c-1.4,0-2.8,0.5-3.8,1.4c-0.9,0.9-1.4,2-1.4,3.3V10H35.1c-1.4,0-2.6,0.5-3.6,1.4c-0.9,0.9-1.4,2.1-1.4,3.6v35c0,1.3,0.5,2.4,1.4,3.4c0.9,1,2.1,1.6,3.6,1.6h40.1v10l-54.5,0.1c-1.5,0-2.7,0.5-3.7,1.6L1.4,84.5c-1.9,2.3-1.9,4.5,0,6.6l15.5,17.5c1,1,2.3,1.6,3.7,1.6l54.5-0.1v45.3c0,1.3,0.5,2.3,1.4,3.3c0.9,0.9,2.4,1.4,3.8,1.4c1.3,0,2.2-0.5,3.3-1.4c1-0.9,1.5-2,1.5-3.3V110l40,0.1c1.2,0,2.4-0.5,3.4-1.4c1-0.9,1.6-2.1,1.6-3.6v-35c0-1.5-0.5-2.7-1.6-3.6c-1-0.9-2.2-1.4-3.4-1.4H85V55l54.4-0.1c2.1,0,2.7-0.6,3.7-1.9l15.5-17.5C160.5,33.5,160.5,31.3,158.6,29z M120.1,75.1v25L85.1,100h0v0l-4.9,0l-5.1,0v0h0l-52.3,0.1l-11-12.4l11-12.6L75,75v0.1h10H120.1z M136.9,45L85.1,45v0h-10h-35V20h35v0l10,0l52.1-0.1l11,12.3L136.9,45z">
              </path>
            </svg></div><span>Via / Avoid</span>
        </span></label></div>
    <div class="">
      <div class="_y9ev9r" style="height:0" aria-hidden="true" data-test="collapsible-container">
        <div class="_1lbcel4" style="display:none;overflow:visible;opacity:0">
          <div class="_189w7zb">
            <div class="_16h934mz"><select id="viaAvoidSelect" aria-label="Via or avoid" role="listbox" name="RouteRestriction" disabled="" class="_leqt7ql" tabindex="-1">
                <option selected="" value="" id="9fbc16fc-7164-4318-ba24-983767e17f2f-Select...">Select...</option>
                <option value="VIA" id="9fbc16fc-7164-4318-ba24-983767e17f2f-Go via">Go via</option>
                <option value="AVOID" id="9fbc16fc-7164-4318-ba24-983767e17f2f-Avoid">Avoid</option>
              </select><svg class="_qi4xd9" viewBox="0 0 8 5" width="16px" height="10px" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
                <polyline points="1 1 3.77984472 4 6.53846154 1"></polyline>
              </svg></div>
            <div class="_142hsft"><label for="viaAvoidStation.search_2023-12-09T06" class="_bm1rcyNaN">
                <div class="_171ou9l1">
                  <div class="_e296pg"><input type="text" aria-label="Arrival station, none selected. Select a station." aria-describedby="" aria-errormessage="" aria-invalid="false" name="viaAvoidStation.search_2023-12-09T06"
                      id="viaAvoidStation.search_2023-12-09T06" value="" placeholder="Enter station..." class="_wy01k7NaN" autocorrect="off" autocomplete="off" spellcheck="false" tabindex="-1" inputmode="text"></div>
                </div>
              </label></div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <fieldset>
    <div class="_u6gigu" data-test="journey-types" role="radiogroup" aria-label="Journey Type">
      <legend class="_jpj1hm"><span>Journey type</span></legend><label for="single" class="_57a3f56">
        <div class=""><input type="radio" name="journeyType" id="single" value="single" checked="" tabindex="0" class="_hxwhc8s" data-test="single-journey-radio-button">
          <div class="_1u9fru1"></div>
        </div><span class="_gcxn8f"><span>One Way</span></span>
      </label><label for="return" class="_57a3f56">
        <div class=""><input type="radio" name="journeyType" id="return" value="return" tabindex="0" class="_hxwhc8s" data-test="return-journey-radio-button">
          <div class="_1u9fru1"></div>
        </div><span class="_gcxn8f"><span>Return</span></span>
      </label><label for="openReturn" class="_57a3f56">
        <div class=""><input type="radio" name="journeyType" id="openReturn" value="openReturn" tabindex="0" class="_hxwhc8s" data-test="open-return-journey-radio-button">
          <div class="_1u9fru1"></div>
        </div><span class="_gcxn8f"><span>Open Return</span></span>
      </label>
    </div>
  </fieldset>
  <div class="_rk5m7u">
    <fieldset class="_1crt4gc" data-test="outbound-datepicker">
      <legend class="_e15e83"><span>Out</span></legend>
      <div class="_iihd54"><button aria-label="Set outbound date to today" aria-haspopup="false" type="button" class="_1765b1rNaN" aria-disabled="false" tabindex="0" data-test="datepicker-same-day-button"><span>Today</span></button><button
          aria-label="Set outbound date to tomorrow" aria-haspopup="false" type="button" class="_1765b1rNaN" aria-disabled="false" tabindex="0" data-test="datepicker-next-day-button"><span>Tomorrow</span></button></div>
      <div class="_e296pg" data-test="date-picker">
        <div class="_89qa0j" data-test="date-picker-input-wrapper">
          <div class="_sa38ho"><svg class="_15129qy" viewBox="0 0 8 5" width="16px" height="10px" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" aria-hidden="false">
              <polyline points="1 1 3.77984472 4 6.53846154 1"></polyline>
            </svg></div><input type="text" aria-label="Date use format: 09-Dec-23" aria-disabled="false" name="page.journeySearchForm.outbound.title" id="page.journeySearchForm.outbound.title" value="09-Dec-23" maxlength="35" class="_t0wlmwNaN"
            data-test="date-input-field" inputmode="text">
        </div>
      </div>
      <div class="_1yfyjm6">
        <div class="_1mq6uq9"><select id="before-after-dropdown" aria-label="Leaving at or Arrive by selector" role="listbox" name="dateType" class="_i0lg2nc" data-test="before-after-dropdown" tabindex="0">
            <option selected="" value="departAfter" id="df2ecd7f-89fd-47e2-af4d-ec8ae6176db2-Leaving at">Leaving at</option>
            <option value="arriveBefore" id="df2ecd7f-89fd-47e2-af4d-ec8ae6176db2-Arriving by">Arriving by</option>
          </select><svg class="_qi4xd9" viewBox="0 0 8 5" width="16px" height="10px" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
            <polyline points="1 1 3.77984472 4 6.53846154 1"></polyline>
          </svg></div>
      </div>
      <div class="_1iepchh">
        <div class="_19tyeda7"><select id="journey-search-form-time-picker" aria-label="hour" role="listbox" name="hours" class="_i0lg2nc" tabindex="0">
            <option value="00" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-00">00</option>
            <option value="01" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-01">01</option>
            <option value="02" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-02">02</option>
            <option value="03" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-03">03</option>
            <option value="04" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-04">04</option>
            <option value="05" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-05">05</option>
            <option selected="" value="06" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-06">06</option>
            <option value="07" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-07">07</option>
            <option value="08" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-08">08</option>
            <option value="09" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-09">09</option>
            <option value="10" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-10">10</option>
            <option value="11" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-11">11</option>
            <option value="12" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-12">12</option>
            <option value="13" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-13">13</option>
            <option value="14" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-14">14</option>
            <option value="15" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-15">15</option>
            <option value="16" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-16">16</option>
            <option value="17" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-17">17</option>
            <option value="18" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-18">18</option>
            <option value="19" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-19">19</option>
            <option value="20" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-20">20</option>
            <option value="21" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-21">21</option>
            <option value="22" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-22">22</option>
            <option value="23" id="2d56e31e-c6e8-450d-915f-9bd7c8c066ec-23">23</option>
          </select><svg class="_qi4xd9" viewBox="0 0 8 5" width="16px" height="10px" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
            <polyline points="1 1 3.77984472 4 6.53846154 1"></polyline>
          </svg></div>
        <div class="_19tyeda7"><select id="journey-search-form-time-picker" aria-label="minutes" role="listbox" name="minutes" class="_i0lg2nc" tabindex="0">
            <option value="00" id="d14efa8a-24ca-48a3-8c1b-b7312c6f9fd7-00">00</option>
            <option value="15" id="d14efa8a-24ca-48a3-8c1b-b7312c6f9fd7-15">15</option>
            <option value="30" id="d14efa8a-24ca-48a3-8c1b-b7312c6f9fd7-30">30</option>
            <option selected="" value="45" id="d14efa8a-24ca-48a3-8c1b-b7312c6f9fd7-45">45</option>
          </select><svg class="_qi4xd9" viewBox="0 0 8 5" width="16px" height="10px" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
            <polyline points="1 1 3.77984472 4 6.53846154 1"></polyline>
          </svg></div>
      </div>
    </fieldset>
    <fieldset class="_1crt4gc" data-test="inbound-datepicker">
      <legend class="_e15e83"><span>Return</span></legend>
      <div class="_iihd54"><button aria-label="Set return date to the same day as outbound" aria-haspopup="false" type="button" class="_1i2ln5rNaN" aria-disabled="true" tabindex="-1" data-test="datepicker-same-day-button"><span>Same
            day</span></button><button aria-label="Set return date to the day after outbound" aria-haspopup="false" type="button" class="_1i2ln5rNaN" aria-disabled="true" tabindex="-1" data-test="datepicker-next-day-button"><span>Next
            day</span></button></div>
      <div class="_e296pg" data-test="date-picker">
        <div class="_4wyc7or" data-test="date-picker-input-wrapper">
          <div class="_sa38ho"><svg class="_15129qy" viewBox="0 0 8 5" width="16px" height="10px" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" aria-hidden="false">
              <polyline points="1 1 3.77984472 4 6.53846154 1"></polyline>
            </svg></div><input type="text" aria-label="Date use format: " aria-disabled="true" name="page.journeySearchForm.inbound.title" id="page.journeySearchForm.inbound.title" value="" maxlength="35" disabled="" class="_19ws0x5NaN"
            data-test="date-input-field" inputmode="text">
        </div>
      </div>
      <div class="_1yfyjm6">
        <div class="_5yovc51"><select id="before-after-dropdown" aria-label="Leaving at or Arrive by selector" role="listbox" name="dateType" disabled="" class="_i0lg2nc" data-test="before-after-dropdown" tabindex="0">
            <option selected="" value="departAfter" id="c53df4d9-520c-4212-b727-8f8bf83b3caf-Leaving at">Leaving at</option>
            <option value="arriveBefore" id="c53df4d9-520c-4212-b727-8f8bf83b3caf-Arriving by">Arriving by</option>
          </select><svg class="_qi4xd9" viewBox="0 0 8 5" width="16px" height="10px" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
            <polyline points="1 1 3.77984472 4 6.53846154 1"></polyline>
          </svg></div>
      </div>
      <div class="_1iepchh">
        <div class="_3h5rvc5"><select id="journey-search-form-time-picker" aria-label="hour" role="listbox" name="hours" disabled="" class="_i0lg2nc" tabindex="0">
            <option value="00" id="67516593-c230-4071-a6e0-61ed1e643a0d-00">00</option>
            <option value="01" id="67516593-c230-4071-a6e0-61ed1e643a0d-01">01</option>
            <option value="02" id="67516593-c230-4071-a6e0-61ed1e643a0d-02">02</option>
            <option value="03" id="67516593-c230-4071-a6e0-61ed1e643a0d-03">03</option>
            <option value="04" id="67516593-c230-4071-a6e0-61ed1e643a0d-04">04</option>
            <option value="05" id="67516593-c230-4071-a6e0-61ed1e643a0d-05">05</option>
            <option value="06" id="67516593-c230-4071-a6e0-61ed1e643a0d-06">06</option>
            <option value="07" id="67516593-c230-4071-a6e0-61ed1e643a0d-07">07</option>
            <option value="08" id="67516593-c230-4071-a6e0-61ed1e643a0d-08">08</option>
            <option value="09" id="67516593-c230-4071-a6e0-61ed1e643a0d-09">09</option>
            <option value="10" id="67516593-c230-4071-a6e0-61ed1e643a0d-10">10</option>
            <option value="11" id="67516593-c230-4071-a6e0-61ed1e643a0d-11">11</option>
            <option value="12" id="67516593-c230-4071-a6e0-61ed1e643a0d-12">12</option>
            <option value="13" id="67516593-c230-4071-a6e0-61ed1e643a0d-13">13</option>
            <option value="14" id="67516593-c230-4071-a6e0-61ed1e643a0d-14">14</option>
            <option value="15" id="67516593-c230-4071-a6e0-61ed1e643a0d-15">15</option>
            <option value="16" id="67516593-c230-4071-a6e0-61ed1e643a0d-16">16</option>
            <option value="17" id="67516593-c230-4071-a6e0-61ed1e643a0d-17">17</option>
            <option value="18" id="67516593-c230-4071-a6e0-61ed1e643a0d-18">18</option>
            <option value="19" id="67516593-c230-4071-a6e0-61ed1e643a0d-19">19</option>
            <option value="20" id="67516593-c230-4071-a6e0-61ed1e643a0d-20">20</option>
            <option value="21" id="67516593-c230-4071-a6e0-61ed1e643a0d-21">21</option>
            <option value="22" id="67516593-c230-4071-a6e0-61ed1e643a0d-22">22</option>
            <option value="23" id="67516593-c230-4071-a6e0-61ed1e643a0d-23">23</option>
          </select><svg class="_qi4xd9" viewBox="0 0 8 5" width="16px" height="10px" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
            <polyline points="1 1 3.77984472 4 6.53846154 1"></polyline>
          </svg></div>
        <div class="_3h5rvc5"><select id="journey-search-form-time-picker" aria-label="minutes" role="listbox" name="minutes" disabled="" class="_i0lg2nc" tabindex="0">
            <option value="00" id="a2fc9d6e-db8f-42fe-9037-17575e7cc1e5-00">00</option>
            <option value="15" id="a2fc9d6e-db8f-42fe-9037-17575e7cc1e5-15">15</option>
            <option value="30" id="a2fc9d6e-db8f-42fe-9037-17575e7cc1e5-30">30</option>
            <option value="45" id="a2fc9d6e-db8f-42fe-9037-17575e7cc1e5-45">45</option>
          </select><svg class="_qi4xd9" viewBox="0 0 8 5" width="16px" height="10px" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
            <polyline points="1 1 3.77984472 4 6.53846154 1"></polyline>
          </svg></div>
      </div>
      <div class="_r1us4r"></div>
    </fieldset>
  </div>
  <hr class="_1iu8mptq">
  <div class="_bug0dg"><button id="passenger-summary-btn" aria-label="1 adult sixteen plus years of age selected. Edit passengers. Add railcards." aria-expanded="false" aria-haspopup="true" type="button" class="_4lzv7pm" aria-disabled="false"
      data-test="passenger-summary-btn-open">
      <div class="_c5iz1w">1 adult (16+)</div>
      <div>
        <div class="_1ly82bn"><span>Add railcards</span></div>
      </div>
      <div class="_ssmh2e"><svg class="_15nicga" viewBox="0 0 8 5" width="16px" height="10px" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" aria-hidden="false">
          <polyline points="1 1 3.77984472 4 6.53846154 1"></polyline>
        </svg></div>
    </button></div>
  <div>
    <div class="_1bnxxh5">
      <div class="style-module__root__w3Cgj"><input type="checkbox" class="style-module__input__ifTl0" id="search-widget-direct-search-toc" name="directSearch" value="directSearch"><svg class="style-module__iconAlignLeft__tqCA4" fill="currentColor"
          viewBox="0 0 24 24" height="24px" width="24px" role="img" id="Check">
          <title>Check</title>
          <desc>Check</desc>
          <path
            d="M19.2803 6.96979C18.9878 6.67654 18.513 6.67654 18.2198 6.96904L9.74325 15.4388L5.781 11.4698C5.4885 11.1765 5.01375 11.1765 4.7205 11.469C4.42725 11.7615 4.42725 12.2363 4.71975 12.5295L9.21225 17.0295C9.249 17.0663 9.288 17.0985 9.33 17.1255C9.61575 17.3145 10.0028 17.2868 10.2593 17.043C10.2638 17.0385 10.2683 17.034 10.2728 17.0295L10.275 17.0273L19.2803 8.02954C19.5735 7.73704 19.5735 7.26154 19.281 6.96904L19.2803 6.96979Z">
          </path>
        </svg><label class="style-module__label__yByU9 style-module__labelTextAlignLeft__rdLsK style-module__labelTrailing__wRs7U" for="search-widget-direct-search-toc">
          <p class="style-module__root__sNM6v style-module__body__jvZNQ style-module__colourBase__JDJ+X style-module__fontRegular__j8TRj">Direct trains only</p>
        </label></div>
    </div>
  </div>
  <div class="_l81twh"><button aria-haspopup="false" type="submit" class="_13sgtmyNaN" aria-disabled="false" data-test="submit-journey-search-button"><span>Get cheapest tickets</span>
      <div class="_1q2yita"><svg class="_1sm050w" viewBox="0 0 8 5" width="16px" height="10px" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" aria-hidden="false">
          <polyline points="1 1 3.77984472 4 6.53846154 1"></polyline>
        </svg></div>
    </button></div>
</form>

Text Content

Between 1st and 9th December rail strikes may impact travel. See here for
details.

Skip to content
CloseClose
Language
Language🇬🇧 English (UK)🇩🇰 Dansk🇩🇪 Deutsch🇦🇹 Deutsch🇨🇭 Deutsch🇺🇸
English (US)🇪🇸 Español🇫🇷 Français🇨🇭 Français🇮🇹 Italiano🇨🇭 Italiano🇳🇱
Nederlands🇳🇴 Norsk🇧🇷 Português🇵🇹 Português🇸🇪 Svenska
Currency
CurrencyAustralian Dollar (AUD/A$)Canadian Dollar (CAD/C$)Swiss Franc
(CHF)Danish Krone (DKK/kr)Euro (EUR/€)Pound Sterling (GBP/£)Japanese Yen
(JPY/¥)Norwegian Krone (NOK/kr)Swedish Krona (SEK/kr)US Dollar (USD/$)
BasketBasketBasket
CloseClose

No tickets in your basket.

Why not plan a trip?

My Bookings
Register

REGISTER WITH US

CloseClose
 * Google sign inGoogle sign inGoogle
 * Facebook sign inFacebook sign inFacebook
 * Apple sign inApple sign inApple
 * EnvelopeEnvelopeEmail

First name

Last name

Email

Did you mean ?Replace
Password
InfoInfo
SHOW

Password strength: weak

MinusMinusAt least 8 characters

MinusMinusHave at least one lowercase letter

MinusMinusHave at least one uppercase letter

MinusMinusHave at least one number or symbol

Register
Already registered? Sign inWe will keep you signed in
Privacy Policy applies
Menu IconIcon opening the menu
 * Train and coach tickets
 * Railcards
 * Business
 * Get our app
 * Find destinations by budget
 * Help
 * Travel Inspiration

 * UK trains
    * UK train times
    * Cheap train tickets
    * Live train times
    * Journey Planner
    * Season Tickets
    * Advance Ticket Alert
    * Group train tickets
    * Split tickets
    * Flexi Season Tickets
    * Digital Season Tickets

 * European trains
    * Trains in Europe
    * Cheap European train tickets
    * Italy train tickets
    * Spain train tickets
    * Germany train tickets
    * France train tickets
    * Belgium train tickets

 * Train companies
    * UK train companies
    * Eurostar tickets
    * Trenitalia tickets
    * Deutsche Bahn tickets
    * SNCF tickets
    * Renfe tickets
    * OBB tickets
    * Frecciarossa trains

 * Popular journeys
    * London to Paris train
    * Paris to Amsterdam train
    * Paris to London train
    * Barcelona to Madrid train
    * Amsterdam to Paris train
    * Brussels to Bruges train
    * Paris to Brussels train

Sign in

SIGN IN

CloseClose
 * Google sign inGoogle sign inGoogle
 * Facebook sign inFacebook sign inFacebook
 * Apple sign inApple sign inApple

Email

PasswordForgotten password?
SHOW
Sign in
New customer? Register nowWe will keep you signed in
Privacy Policy applies



SEARCH TIMES AND TICKETS

When results are available use up and down arrows to review and enter to
select.Touch device users, explore by touch or with swipe gestures.
From

To


Via / Avoid
Select...Go viaAvoid

Journey type

One Way

Return

Open Return
Out
TodayTomorrow

Leaving atArriving by
000102030405060708091011121314151617181920212223
00153045
Return
Same dayNext day

Leaving atArriving by
000102030405060708091011121314151617181920212223
00153045


--------------------------------------------------------------------------------

1 adult (16+)
Add railcards

CheckCheck

Direct trains only

Get cheapest tickets



SAVING 35% WITH TRAINLINE THIS FESTIVE SEASON?


BE MERRY. BE BRIGHT.

Learn more


DISCOVER TRAINS IN EUROPE

Going abroad? We’ve now got more routes than ever. Book tickets on 1000s of
journeys across Europe.

Explore destinations

Mobile phone with QR code displayedMobile phone with QR code displayed
Start saving!


BUY YOUR RAILCARD WITH US

Save a 1/3 on travel with a digital Railcard. Plus you can store it in your app,
so it’s always with you.

Find your Railcard
Download appDownload app


IT’S EASIER WITH THE TRAINLINE APP

With live train times, up-to-date platform information and digital tickets, just
tap, scan and go with the Trainline app.

Download the app


SAVE EVEN MORE WITH TRAINLINE


GREAT VALUE, EVERY TIME

Save 61% on average when you book in advance


CHEAPER WITH SPLITSAVE

Get an average of £21.65 off with split tickets


USE OUR APP

Handy features and even more ways to save


GET 1/3 OFF TRAVEL

A digital Railcard can save you around £167 a year


BEST FARE FINDER IMAGES

 * London to Paris
   from
   £39.00
   
 * Madrid to Barcelona
   from
   £8.23
   
 * London to Edinburgh
   from
   £27.80
   


HAVE YOU CONSIDERED COACH?

Find more options for your journey. Start a search and, if there’s a coach
available, we’ll suggest the best tickets.




POPULAR TRAIN JOURNEYS

From local trips to cross-country adventures, find info and book train tickets
for popular journeys in the UK and rest of Europe.


 * UK


 * EUROPE

 * London to Edinburgh
 * London to Manchester train
 * London to Brighton
 * Glasgow to London
 * Edinburgh to London
 * London to Birmingham
 * London to Liverpool
 * Liverpool to London train
 * London to Bath
 * Birmingham to London train
 * London to Oxford train
 * Newcastle to Glasgow train
 * London to Leeds train
 * London to Cardiff train
 * London to Newcastle train
 * Popular routes in England
 * Popular routes in Scotland
 * Cheap trains to London
 * Cheap trains to Manchester
 * Trains to Edinburgh

 * London to Paris
 * Paris to London
 * Milan to Venice
 * Barcelona to Madrid
 * Rome to Venice
 * London to Amsterdam
 * London to Brussels
 * Florence to Rome
 * Venice to Rome
 * Paris to Amsterdam
 * Brussels to Amsterdam
 * Madrid to Seville
 * Milan to Florence
 * Madrid to Barcelona
 * Florence to Venice
 * Trains in Europe
 * Trains in France
 * Trains in Italy
 * Trains in Germany
 * Trains in Spain


CHEAP TRAIN TICKETS - BUY IN ADVANCE AND SAVE 61%*

We're here to help you save on train tickets for your next rail journey. Our
Journey Planner compares train times and prices across hundreds of operators in
UK and Europe so you don't have to. One of the best ways to secure cheap train
tickets is to buy your tickets in advance – the sooner you book your Advance
tickets, the more you’ll save.

Planning far ahead? Why not use our Ticket Alert tool – we’ll send you an email
when Advance tickets become available for your preferred route. If you are
flexible with your time of travel, use our Best Fare Finder to find cheap train
tickets other customers have found.


OTHER WAYS TO SAVE ON TRAIN TRAVEL

There are more ways to get the cheapest tickets. Here are our top tips; Get a
Railcard – you’ll save up to 1/3 for a whole year; split your train tickets –
breaking your journey into separate tickets can be cheaper than buying a single
ticket; buy a Flexi Season ticket – save money if you’re commuting during Peak
times, 2-3 days a week.

Travelling across Europe? No problem! We gather routes, prices, and travel times
from over 270 rail and coach operators in 45 countries. Read our guides to
trains in Europe and travelling Europe by bus for more information.

--------------------------------------------------------------------------------

* Average savings on all fares booked at least one week before day of travel vs
Anytime fares purchased on day of travel. Subject to availability. Excludes
coach.

--------------------------------------------------------------------------------

 * About Trainline
 * News
 * Investors
 * Careers
 * Trainline Partner Solutions
 * Affiliates and Partnerships
 * Terms and conditions / Security
 * Privacy / Cookies
 * Modern Slavery Act (UK)

HELP AND USEFUL INFORMATION

 * Help
 * Ticket refunds and changes
 * Getting your ticket
 * Delays and disruption
 * Delay Repay
 * Travel assistance
 * Airport transfers
 * Off-Peak train times
 * Mobile apps
 * Deals and offers
 * Advance train tickets
 * Popular train journeys
 * Railcards
 * Mobile Tickets
 * Sleeper trains (UK only)
 * Day trips
 * Weekly Season Tickets
 * Monthly Season Tickets
 * Annual Season Tickets
 * I came by train
 * Price Prediction
 * Our authors

TRAIN AND BUS COMPANIES

 * European train companies
 * Lumo
 * Avanti West Coast
 * LNER
 * GWR
 * ScotRail
 * Gatwick Express
 * Stansted Express
 * Heathrow Express
 * Elizabeth line
 * Leonardo Express
 * Malpensa Express
 * OUIGO
 * OUIGO Spain
 * Westbahn
 * TGV
 * Italo
 * FlixTrain
 * BlaBlaCar Bus
 * Avlo
 * AVE
 * Flixbus
 * National Express

TRAIN JOURNEYS IN THE UK

 * London to Manchester
 * Leeds to London
 * London to Birmingham
 * London to Newcastle
 * Manchester to London
 * Edinburgh to London
 * London to Liverpool
 * Glasgow to Manchester
 * Manchester to Glasgow
 * Glasgow to Liverpool
 * Birmingham to Glasgow
 * Edinburgh to Glasgow
 * Glasgow to Leeds
 * York to London
 * London to Edinburgh
 * London to Brighton
 * Glasgow to London
 * Cardiff to London
 * Bristol to London
 * Newcastle to London
 * Edinburgh to Manchester
 * London to Norwich
 * Birmingham to London
 * London to Glasgow

TRAINS AND BUSES IN EUROPE

 * European train times
 * London to Brussels
 * London to Amsterdam
 * Paris to Lyon
 * Rome to Milan
 * Paris to Milan
 * Alicante to Madrid
 * Rome to Florence
 * Valencia to Madrid
 * London to Barcelona
 * London to Madrid
 * Barcelona to Valencia
 * Rome to Venice
 * London to Rome
 * Rome to Naples
 * London to Amsterdam Centraal
 * Malaga to Madrid
 * Madrid to Barcelona
 * Milan to Venice

TOP DESTINATIONS

 * European destinations
 * Trains to London
 * Trains to Manchester
 * Trains to Birmingham
 * Trains to Leeds
 * Trains to Edinburgh
 * Trains to Glasgow
 * Trains to Heathrow Airport
 * Trains to Luton Airport
 * Trains to Brighton
 * Trains to Gatwick Airport
 * Trains to Stansted Airport
 * Trains to France
 * Trains to Paris
 * Trains to Amsterdam
 * Trains to Disneyland Paris
 * Trains to Brussels

STATIONS

 * UK train stations
 * European train stations
 * London Paddington
 * Barcelona Sants
 * Birmingham New Street
 * Milan Central Station
 * Edinburgh Waverley
 * London Euston
 * London Kings Cross
 * Gatwick Airport
 * Paris Gare du Nord
 * Amsterdam Centraal


Copyright © 2023 Trainline.com Limited and its affiliated companies. All rights
reserved.Trainline.com Limited is registered in England and Wales. Company No.
3846791. Registered address: 3rd floor, 120 Holborn, London EC1N 2TD, United
Kingdom. VAT number: 791 7261 06.






YOUR PRIVACY MATTERS TO US

We use essential cookies to make our site work. We and partners also use cookies
to personalise your experience and measure our site's performance.
Accept cookies
Choose cookies



CHOOSE YOUR COOKIES

Cookies get a bad rep, but they’re actually really useful and save you a lot of
time.
Read more

STRICTLY NECESSARY COOKIES



These strictly necessary cookies can’t be turned off, as they power our site.
They’re used for identity, security, fraud prevention and functionality
purposes.

PERFORMANCE COOKIES

Performance Cookies

These help us speed up your browsing. We want to help you travel effortlessly,
so our site and app need to do what you want, when you want them to!

PERSONALISATION COOKIES

Personalisation Cookies

These make our site unique to you. You’re an individual after all! These cookies
allow us and partners that we work with to show you adverts that are more likely
to be relevant to your interests.

Back Button


COOKIE LIST



Search Icon
Filter Icon

Clear
checkbox label label
Apply Cancel
Consent Leg.Interest
checkbox label label
checkbox label label
checkbox label label

Done