# Cloudflare Error Page Generator ## What does this project do? This project creates customized error pages that mimics the well-known Cloudflare's error page. You can also embed it into your website. ## Quickstart Install cloudflare-error-page using pip ``` Bash pip install git+https://github.com/donlon/cloudflare-error-page.git ``` Then you can generate an error page based on parameters you like. (See [example.py](examples/example.py)) ``` Python import webbrowser from cloudflare_error_page import render as render_cf_error_page # This function renders an error page based on the input parameters error_page = render_cf_error_page({ # Browser status is ok 'browser_status': { "status": 'ok', }, # Cloudflare status is error 'cloudflare_status': { "status": 'error', "status_text": 'Not Working', }, # Host status is also ok 'host_status': { "status": 'ok', "location": 'example.com', }, # can be 'browser', 'cloudflare', or 'host' 'error_source': 'cloudflare', # Texts shown in the bottom of the page 'what_happened': '
There is an internal server error on Cloudflare\'s network.
', 'what_can_i_do': 'Please try again in a few minutes.
', }) with open('error.html', 'w') as f: f.write(error_page) webbrowser.open('error.html') ```  ## More Examples ### Catastrophic infrastructure failure ``` Python params = { 'title': 'Catastrophic infrastructure failure', 'more_information': { "text": "cloudflare.com", "link": "https://youtube.com/watch?v=dQw4w9WgXcQ", }, 'browser_status': { 'status': 'error', 'status_text': 'Out of Memory', }, 'cloudflare_status': { 'status': 'error', 'location': 'Everywhere', 'status_text': 'Not Working', }, 'host_status': { 'status': 'error', 'location': 'example.com', 'status_text': 'On Fire', }, 'error_source': 'cloudflare', 'what_happened': 'There is a catastrophic failure.
', 'what_can_i_do': 'Please try again in a few years.
', 'perf_sec_by': { "text": "Cloudflare", "link": "https://youtube.com/watch?v=dQw4w9WgXcQ", }, } ```  ### Web server is working ``` Python params = { 'title': 'Web server is working', 'error_code': 200, "more_information": { "hidden": True, }, 'browser_status': { 'status': 'ok', 'status_text': 'Seems Working', }, 'cloudflare_status': { 'status': 'ok', 'status_text': 'Often Working', }, 'host_status': { 'status': 'ok', 'location': 'example.com', 'status_text': 'Just Working', }, 'error_source': 'host', 'what_happened': 'This site is still working. And it looks great.
', 'what_can_i_do': 'Visit the site before it crashes someday.
', } ```  ### Using Flask server See [flask_server.py](examples/flask_server.py) ## Full Parameter Reference ``` JavaScript { "html_title": "cloudflare.com | 500: Internal server error", "title": "Internal server error", "error_code": 999, "time": "2025-11-18 12:34:56 UTC", // if not set, current UTC time is shown // Configuration for "Visit ... for more information" line "more_information": { "hidden": false, "text": "cloudflare.com", "link": "https://youtube.com/watch?v=dQw4w9WgXcQ", }, // Configuration for the Browser/Cloudflare/Host status "browser_status": { "status": "ok", // "ok" or "error" "location": "You", "name": "Browser", "status_text": "Working", "status_text_color": "#9bca3e", }, "cloudflare_status": { "status": "error", "location": "Cloud", "name": "Cloudflare", "status_text": "Not Working", "status_text_color": "#bd2426", }, "host_status": { "status": "ok", "location": "The Site", "name": "Host", "status_text": "Working", "status_text_color": "#9bca3e", }, "error_source": "host", // Position of the error indicator, can be "browser", "cloudflare", or "host" "what_happened": "There is an internal server error on Cloudflare's network.
", "what_can_i_do": "Please try again in a few minutes.
", "ray_id": '0123456789abcdef', // if not set, random hex string is shown "client_ip": '1.1.1.1', // Configuration for 'Performance & security by ...' in the footer "perf_sec_by": { "text": "Cloudflare", "link": "https://youtube.com/watch?v=dQw4w9WgXcQ", }, } ```