The iCalendar Validator takes iCalendar data from a URL, file or text snippet and compares it against the RFC 5545 specification. You can find more information about the iCalendar Validator and version history by clicking here.

We welcome your feedback! Please send us a note through the "Contact Us" link above for questions or to report any problems.

Note: The validator is limited to iCalendar data 512KB or less in size. 

iCalendar Validator

Enter either an iCalendar URL, file, or paste text from an iCalendar file for validation.


Maximum upload size: 512.00 kB

Was our validator tool helpful? If so, consider thanking the developer with a virtual cup of coffee. Donate $4 (USA) to say thanks!

coffee cup
Results
Problem! Found 1 warning
Warnings
  1. Invalid MIME type detected, should be 'text/calendar' (found MIME type 'application/x-httpd-php') near line # 1Reference: RFC 5545 8.1. iCalendar Media Type Registration
Problem! Found 2 errors
Errors
  1. This is not an iCalendar file or URL near line # 1Reference: RFC 5545 3.4. iCalendar Object
  2. Missing VCALENDAR object near line # 1Reference: RFC 5545 3.4 iCalendar Object

Permalink: https://icalendar.org/validator.html?url=https://mjmnagy.info/calendar/p-6CIhzonq8Tcz9onCHvWZoDmT4smuXoBil1zy6PS7fzlm%2B%2BdMpHskFN%2Fr2htoGbg8

Permalinks are available when validating by URL. You can use a permalink to send a link of the validation results page using e-mail or web posting.

JSON Permalink: https://icalendar.org/validator.html?url=https://mjmnagy.info/calendar/p-6CIhzonq8Tcz9onCHvWZoDmT4smuXoBil1zy6PS7fzlm%2B%2BdMpHskFN%2Fr2htoGbg8&json=1

The JSON permalink formats the validation results in JSON format, which can be used by other programs for further analysis.

  1. <?php
  2. //Redirect code
  3. $status = !empty($_SERVER['REDIRECT_STATUS']) ? $_SERVER['REDIRECT_STATUS'] : http_response_code();
  4. //Create warning
  5. $codes = array(
  6. 400 => array('400 Bad Request', 'The request cannot be fulfilled due to bad syntax.', "frown-o"),
  7. 403 => array('403 Access Denied ', 'You do not have sufficient permissions to access the page.', "ban"),
  8. 404 => array('404 Not Found', 'The page you requested was not found on this server.', 'question'),
  9. 405 => array('405 Method Not Allowed', 'The method specified in the request is not allowed for the specified resource.', 'frown-o'),
  10. 408 => array('408 Request Timeout', 'Your browser failed to send a request in the time allowed by the server.', 'clock-o'),
  11. 500 => array('500 Internal Server Error', 'The request was unsuccessful due to an unexpected condition encountered by the server.','meh-o'),
  12. 502 => array('502 Bad Gateway', 'The server received an invalid response while trying to carry out the request.','question'),
  13. 504 => array('504 Gateway Timeout', 'The upstream server failed to send a request in the time allowed by the server.', 'clock-o'),
  14. //Custom codes - no affiliation with actual html codes
  15. "E-L" => array('League Manager', 'Only a league manager has the ability to access this page.', 'ban'),
  16. );
  17. //Create title
  18. $title = isset($codes[$status][0]) ? $codes[$status][0] : $codes[404][0];
  19. $icon = isset($codes[$status][2]) ? $codes[$status][2] : $codes[404][2];
  20. $message= isset($codes[$status][1]) ? $codes[$status][1] : $codes[404][1];
  21. //Create message
  22. if ($title == false || strlen($status) != 3) {
  23. //Message default
  24. $message = 'Please supply a valid HTTP status code.';
  25. $status = "???";
  26. $icon = "question";
  27. }else{
  28. //Adjust status
  29. $status = $status == 200 ? 404 : $status;
  30. }
  31. ?>
  32. <!DOCTYPE html>
  33. <html lang="en">
  34. <head>
  35. <meta charset="utf-8">
  36. <title>Error</title>
  37. <meta name="description" content="There was an error">
  38. <meta name="robots" content="noindex, nofollow">
  39. <?php include(COMP.'front/includes/head.php'); ?>
  40. </head>
  41. <body class="boxed page">
  42. <!-- Wrap -->
  43. <div class="wrap">
  44. <!-- Main Section -->
  45. <section id="main">
  46. <div class="breadcrumb-wrapper">
  47. <div class="pattern-overlay">
  48. <div class="container">
  49. <div class="row">
  50. <div class="col-lg-6 col-md-6 col-xs-12 col-sm-6">
  51. <h2 class="title"><?php echo $title?></h2>
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. </div>
  57. <!-- Main Content -->
  58. <div class="content margin-top60 margin-bottom60">
  59. <div class="container">
  60. <div class="row">
  61. <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
  62. <h2 class="text-center">Whoops... <?php echo $title; ?>!!!</h2>
  63. <div id="not-found">
  64. <h2><?php echo $status; ?> <i class="fa fa-<?php echo $icon;?>"></i></h2>
  65. </div>
  66. <div class="back-home text-center margin-top30">
  67. <?php echo $message; ?>
  68. </div>
  69. <div class="text-center margin-top30">
  70. <a href="//<?php echo SITE; ?>">
  71. <button class="btn btn-default btn-lg" title="Click here to go to squadSet's home page" data-rel="tooltip">
  72. <i class="fa fa-home"></i> Home Page
  73. </button>
  74. </a>
  75. <?php if(!empty(ME)){ ?>
  76. <a href="//<?php echo LOGIN; ?>">
  77. <button class="btn btn-default btn-lg" title="Click here to go to your dashboard" data-rel="tooltip">
  78. <i class="fa fa-dashboard"></i> Dashboard
  79. </button>
  80. </a>
  81. <?php } ?>
  82. <button class="btn btn-default btn-lg" title="Click here to go back to the last page" data-rel="tooltip" onclick="history.go(-1)">
  83. <i class="fa fa-arrow-left"></i> Back to Last Page
  84. </button>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. <!-- /Main Content -->
  91. </section>
  92. <!-- /Main Section -->
  93. <!-- Scroll To Top -->
  94. <a href="#" class="scrollup"><i class="fa fa-angle-up"></i></a>
  95. </div>
  96. <?php include(COMP.'front/includes/js.php'); ?>
  97. </body>
  98. </html>
iCalendar Validator version 1.13, written by Dan Cogliano, Z Content

If you find a problem with our validator, please contact us to tell us about it.  We strive to make this the best iCalendar validator on the internet and your feedback will help us achieve that goal.