The Output of Fiverizer

Fiverizer tries to make the HTML5 results should look like the original XHTML 1.0 source file, as viewed in the current versions of modern desktop browsers, specifically, Chrome (and its derivatives, including browsers like Microsoft Edge) and Firefox.

"Current version", in this case, means the versions of the browsers that were current at the time I wrote Fiverizer. (I don't have a time machine, and so could not reach into the future to get the version that you are using now, as you read this.)

Notice that I said that my benchmark of correctness for Fiverizer's output is the current web browser's rendering. I did not say that it should match what the XHTML 1.0 standards say it should look like. This is because browsers do not necessarily render things the way the standards say they should.

If you think that the generated output seems different from what your original page looked like, open the original XHTML 1.0 page in your browser to compare, to see if it is really different. Do not rely on your memory of how that page appeared or worked when you first developed it. In my experience, web browsers seem to be slowly losing old XHTML 1.0 and HTML 4.01 features over the years, either because of new bugs in previously working code ("regressions" in programming lingo) that the developers don't want to fix (since those features are obsolete in HTML5, so it's not worth their effort) or because of a deliberate decision to stop supporting it (such as the <applet> element, for security reasons). In other words, certain things that worked long ago (when you first designed the page) may actually no longer work in today's browsers.

Fiverizer's goal is that your converted web page should appear the same as your original XHTML version when displayed in these modern browsers. If a particular obsolete XHTML 1.0 feature once worked in an old version of a browser, but now does nothing in today's browsers, Fiverizer will strive to mimic the behavior of the latter when converting the code. In other words, the generated HTML5/CSS code will also do nothing.

This is by design. I know that the XHTML 1.0 specifications (and the HTML 4.01 specifications on which it is built) say that such-and-such a feature is suppose to do such-and-such a thing. But if a modern browser treats the XHTML as not doing anything, Fiverizer will also create an HTML5/CSS equivalent that does nothing. My aim is that the converted web page gives the webmaster no surprises. Your code which has not functioned for years (or however long it has been), and which you have long worked around, will not suddenly spring back to life after conversion, and conflict with those workarounds.

How Similar Will the Results Be?

Most of the obsolete XHTML 1.0 features can be translated into equivalent HTML5, with the help of CSS, without problems. If your page only contains such features, the HTML5 output should look the same as the XHTML original in a browser.

For code that Fiverizer cannot produce an equivalent, it will issue an error message and abort. This usually only occurs for well-known non-standard code (like the infamous <marquee> tag, which does not appear in any HTML or XHTML standard). It also occurs for certain (pointless) elements that were already deprecated (ie, marked for removal) when HTML was officially standardized for the first time (that is, in HTML 2.0).

In some situations, Fiverizer can actually convert the code, but CSS does not provide the facility to create an exact equivalent of the original. For example, if your page uses <img align="middle">, Fiverizer replaces the align attribute with its CSS equivalent. However, the CSS idea of a middle point is different from HTML's align attribute. As far as I can tell, the difference is slight, probably a pixel or two (I think). At this time, it will only be different in Chrome (and its derivatives), since I have managed to compensate for this in Firefox with the help of vendor-specific CSS (which may or may not go away in later versions of Firefox). In this case, since the difference is so small (and hopefully insignificant), Fiverizer simply converts the code without issuing a warning or error message.

If your web pages use <frameset> and <frame>, you are likely to encounter small differences with your original, since they have to be replaced entirely and mimicked using other HTML5 and CSS code, which don't really have the exact same features available. Depending on your code, the width or height of a frame may be off by 1 pixel or so. In addition, if your original code allowed frames to be resized by the user, the replacement will not allow this, since such a facility is no longer possible in HTML5 and CSS. No warning is issued for the above two differences, in order not to overwhelm you with a stream of useless warnings that will probably occur for every page of your site, since if you use framesets at all, you will probably use it on all of them. Otherwise, you will end up with a flurry of warnings about insignificant differences, that may actually divert your attention from more important messages.

That said, for <frameset>/<frame> elements that have attributes affecting the display more substantially, but which Fiverizer is not able to replace, warnings will be issued.

Always Check the Results Yourself

You should always check the HTML5 output in a web browser, to see whether the results are acceptable. Don't rely on the above description. It is not exhaustive. You cannot afford not to check. Don't forget, if your original XHTML has errors, Fiverizer may actually mangle your page, since it relies on your page being well-formed and valid. Fiverizer itself may have bugs too. Although I have tested it as best as I could, any program of sufficient complexity will probably have bugs.

Manually open all the converted pages in a browser, one by one. Do not modify anything before checking, or you may introduce errors and think that it was caused by the conversion. If you don't like what you see, revert to the original file, which you saved earlier when you made your backup.

Although this seems like a lot of tedious work, think of it this way. Fiverizer already did the heavy lifting for you, so at least you saved the time and effort having to do that. This second part of the task, checking the results, was always something you needed to do, no matter who (whether you or someone you hired) or what (a piece of software) did the conversion.