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
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 DOMPOST
<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