Free Republic Tree Viewer

Free Republic Tree Viewer (FRTV) is a browser extension designed to make it easier to read discussion threads on Free Republic, a political forum. Free Republic has an excellent forum implementation, custom designed by the site's founder, Jim Robinson. It's head and shoulders above the junk that powers most other forums on the net. But there is always room for improvement.

FRTV is a "content script" packaged within an extension. It modifies Free Republic thread pages on the fly, after they have been downloaded by your browser. It supplies additional functionality designed to make it easier to follow the conversational interplay between thread contributors.

Click here to skip to installation.

FRTV performs the following enhancements on Free Republic threads:

FRTV also logs messages showing the time taken by various functions in a blue-shaded area at the very bottom of the page.


To install FRTV in Firefox, click here. Your browser will show a dialog allowing you to approve the installation. (Note that, as of 2017-12-14, FRTV no longer needs the Greasmonkey extension.)

To install FRTV in Chrome, see Installing Content Scripts in Chrome.


On page load, FRTV performs the blank line and article redirect edits and adds Quote buttons to the posts, as well as buttons and keyboard shortcuts to access the tree view and poster report functions.

The View as Tree and Poster Report buttons appear near the top of the page, following the comments link
The Quote button appears after the To link in each post

The page initialization process contributes negligible time to the page load. However, once the page has loaded, activating the other functions (tree view, quoting, poster report) may take noticeable time, depending on whether the thread spans multiple pages or is very long.

Using the Tree View

Tree View
Click to enlarge
To activate the tree view, click the View as Tree button or key Ctrl-Alt-T. After a short delay (longer for multipage threads), the sequential, flat view will be replaced with the indented tree view. If you click the button, the display will also scroll to the comments (because FRTV adds the button inside the comments link).If you use the keyboard shortcut, the display will not move.

Once the tree view is showing, the button changes to Flat View. Clicking the button (or keying Ctrl-Alt-T) reverts the display back to the original and changes the button back to View as Tree.

In the tree view, replying posts are indented in shaded boxes beneath the posts to which they are in reply. To help the eye track the indentation level, the background color changes cyclically. All of the posts at a particular indentation level have the same background color.

Normally, the only post at the outermost level will be #1. However, if a thread has any deleted posts, these will also placed at the outermost level, with their reply trees beneath them. This is because deleted posts no longer contain a link back to their reply targets.

The Scroll Box

Scroll box
If you click in the white area left by the indentation, a small draggable floating "scroll box" appears, containing three buttons. The scroll box gives you an additional way to navigate the thread, one that is sensitive to the tree structure.

If you click the Dn or the Up button, the page scrolls down or up, respectively, past the scroll box until it reaches a post at the same or outer indentation level as that of the scroll box. The scroll box's indentation level is indicated both by its horizontal position and by its background color. If you bring it up, and it doesn't have the expected color, press the mouse in the background area and drag it left or right until the background changes to the proper color. To dismiss the scroll box, click its close button in the upper right.

Normally, hitting the Dn or Up button causes an animated scroll. That is to say, instead of simply repositioning the display at the end point of the scroll (a jump scroll), FRTV scrolls in a series of rapid, short increments, allowing the page to be displayed at its intermediate position after each increment, thus making the page appear to fly past the stationary scroll box until it reaches the destination. The effect gives you a sense of how far the scroll moved. The animation aims to complete the scroll in constant time (half a second). Therefore, the display moves more quickly the longer the distance to be covered.

If you want a jump scroll instead of the animation, hold down the Ctrl or Alt keys when clicking the Dn or Up button. Also, a click in the indentation area will stop a scroll animation.

You can change or drop the animation feature. See Customization below.

Using the Quote Button

Post quoting
Click to enlarge
The Quote button is located following the To link in each post having one. When you click the Quote button, FRTV fetches a copy of the post addressed by the To link and displays it in a shaded box above the current post. We refer to the copy as the quoted post. At the same time, the Quote button changes to an Unquote button. Clicking it makes the quoted post vanish, restoring the previous appearance.

Of course, the quoted post also contains a quote button (unless it's the #1 post or a deleted post). Thus, by repeatedly clicking Quote, you can follow the reply chain all the way to the top.

Note: The Quote button can also quote posts which are mentioned by number in the text of a post. Use the mouse to select the number(s) of the posts you would like to see quoted. Then click the Quote button. It will quote the referenced post(s) instead of the post to which the current post is in reply. It ignores non-numeric text in the selection; thus, if a post directs you to "see my posts #37 and 41", you would select that text, and it would quote #37 and #41.

The Quote button is available in the tree view as well as the flat view.

Obtaining a Poster Report

Poster report
Click to enlarge
To obtain the poster report, click on the Poster Report button (located near the top of the page, by the comments link) or key the Ctrl-Alt-R keyboard shortcut. The report will appear in a popup window after a short delay (longer for multipage threads). If you use the keyboard shortcut, and the report fails to appear, scroll to the top of the page and look for a notice that Firefox prohibited the popup. Click the Options button and authorize popups for the Free Republic site.

The poster report contains a table listing each contributor to the thread along with the length of time (in days, weeks, months, or years) the user has been registered at Free Republic, the number of posts the user has made on the current thread, the number of replies the user has received, and the reply / post ratio. Clicking on a table heading sorts the table by the corresponding column or reverses the order if the table is already sorted on the column. Clicking on a poster's name pops up the poster's FR home page. The name of the user who posted the thread is bolded.

Initially, the posters are listed in order of their first appearance on the thread. The left-most column, headed Rank, indicates a user's ranking in the current sort order (e.g., rank 3 would be third oldest if the table is sorted by FR Age). If you have sorted the table, clicking on the Rank heading sorts the table back into poster appearance order.

At the bottom of the report are some thread statistics, including the number of posts and deleted posts, the number of contributors, the posts per contributor, and the average Free Republic tenure. The posts per contributor statistic gives an indication of how close knit the discussion group is.

Large Thread Considerations

Most threads on Free Republic are short. I would estimate the average thread length to be around 35 posts and the median even lower, probably around 20. However, there are some extremely long threads. For the reasons outlined below, I don't recommend invoking the tree view or the poster report on very long threads. However, the Quote button will not be a problem even on a very long thread.

The tree view and the poster report both operate on the thread in its entirety. If a thread spans multiple pages, either operation will trigger the loading of all of its pages in the background (unless the full thread has already been loaded as a result of an earlier operation). How long this will take depends on the following, in roughly descending order of importance:

The Quote button takes negligible time if the target post is in the current page. However, if the target is in a previous page not already fetched, FRTV will load the page containing it in the background, incurring a delay.

The Progress Box

Whenever FRTV is fetching pages in the background, it pops up a floating progress report box which looks like this:

Progress report box

If you wish to abandon an over-long request, click the Cancel button. The operation will abort at the conclusion of the next page load. Refreshing the page or navigating away will also abort the background activity. Either operation basically reboots FRTV, requiring it to rebuild its data structures from scratch.

Changing Your Page Size

If you are logged into Free Republic, you can change your thread page size. Go to the Settings page and select the Thread Pagination value you want. The default is 50 posts per page. You can set it as high as 250. At 250 posts per page, most threads will fit into a single page.


Note: Now that FRTV is distributed as an extension rather than a user script making changes is a more complex undertaking. See here for what to do.

If you edit the script, you can make some customizations by changing some constants near the top of the file. Right-click the monkey face in the status bar and select Manage User Scripts.... Then select "FR Tree Viewer" and click Edit. Remember to backup your modified script. If you install an updated version of FRTV, you will need to reapply your changes.

The constants are marked with const declarations. Items you might want to change:

If you mess up a change (e.g., leave off a quote mark or such), the likely symptom is that FRTV will simply fail to work (no screen changes). To find the problem, bring up the JavaScript Console (under Tools), select All and clear out existing messages. Then load (or reload) an FR thread page. You should see a message indicating where the problem is.