diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index bc217d2..c4b80f0 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -7,8 +7,8 @@
 
 - Issue #25199: Idle: add synchronization comments for future maintainers.
 
-- Issue #16893: Replace help.txt with idle.html for Idle doc display.
-  The new idlelib/idle.html is copied from Doc/build/html/library/idle.html.
+- Issue #16893: Replace help.txt with help.html for Idle doc display.
+  The new idlelib/help.html is rstripped Doc/build/html/library/idle.html.
   It looks better than help.txt and will better document Idle as released.
   The tkinter html viewer that works for this file was written by Mark Roseman.
   The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.
diff --git a/Lib/idlelib/idle.html b/Lib/idlelib/help.html
similarity index 100%
rename from Lib/idlelib/idle.html
rename to Lib/idlelib/help.html
diff --git a/Lib/idlelib/help.py b/Lib/idlelib/help.py
index 7d48574..78e5775 100644
--- a/Lib/idlelib/help.py
+++ b/Lib/idlelib/help.py
@@ -1,23 +1,26 @@
-"""
-help.py implements the Idle help menu and is subject to change.
+""" help.py: Implement the Idle help menu.
+Contents are subject to revision at any time, without notice.
 
-The contents are subject to revision at any time, without notice.
 
 Help => About IDLE: diplay About Idle dialog
 
 <to be moved here from aboutDialog.py>
 
-Help => IDLE Help: display idle.html with proper formatting
 
-HelpParser - Parses idle.html generated from idle.rst by Sphinx
-and renders to tk Text.
+Help => IDLE Help: Display help.html with proper formatting.
+Doc/library/idle.rst (Sphinx)=> Doc/build/html/library/idle.html
+(help.copy_strip)=> Lib/idlelib/help.html
 
-HelpText - Displays formatted idle.html.
+HelpParser - Parse help.html and and render to tk Text.
 
-HelpFrame - Contains text, scrollbar, and table-of-contents.
+HelpText - Display formatted help.html.
+
+HelpFrame - Contain text, scrollbar, and table-of-contents.
 (This will be needed for display in a future tabbed window.)
 
-HelpWindow - Display idleframe in a standalone window.
+HelpWindow - Display HelpFrame in a standalone window.
+
+copy_strip - Copy idle.html to help.html, rstripping each line.
 
 show_idlehelp - Create HelpWindow.  Called in EditorWindow.help_dialog.
 """
@@ -36,7 +39,7 @@
 ## IDLE Help ##
 
 class HelpParser(HTMLParser):
-    """Render idle.html generated by Sphinx from idle.rst.
+    """Render help.html into a text widget.
 
     The overridden handle_xyz methods handle a subset of html tags.
     The supplied text should have the needed tag configurations.
@@ -62,7 +65,7 @@
         self.tags = '' if self.level == 0 else 'l'+str(self.level)
 
     def handle_starttag(self, tag, attrs):
-        "Handle starttags in idle.html."
+        "Handle starttags in help.html."
         class_ = ''
         for a, v in attrs:
             if a == 'class':
@@ -120,7 +123,7 @@
             self.text.insert('end', s, self.tags)
 
     def handle_endtag(self, tag):
-        "Handle endtags in idle.html."
+        "Handle endtags in help.html."
         if tag in ['h1', 'h2', 'h3', 'span', 'em']:
             self.indent(0)  # clear tag, reset indent
             if self.show and tag in ['h1', 'h2', 'h3']:
@@ -136,7 +139,7 @@
             self.indent(amt=-1)
 
     def handle_data(self, data):
-        "Handle date segments in idle.html."
+        "Handle date segments in help.html."
         if self.show and not self.hdrlink:
             d = data if self.pre else data.replace('\n', ' ')
             if self.tags == 'h1':
@@ -152,7 +155,7 @@
 
 
 class HelpText(Text):
-    "Display idle.html."
+    "Display help.html."
     def __init__(self, parent, filename):
         "Configure tags and feed file to parser."
         Text.__init__(self, parent, wrap='word', highlightthickness=0,
@@ -191,6 +194,7 @@
 
 
 class HelpFrame(Frame):
+    "Display html text, scrollbar, and toc."
     def __init__(self, parent, filename):
         Frame.__init__(self, parent)
         text = HelpText(self, filename)
@@ -205,6 +209,7 @@
         toc.grid(column=0, row=0, sticky='nw')
 
     def contents_widget(self, text):
+        "Create table of contents."
         toc = Menubutton(self, text='TOC')
         drop = Menu(toc, tearoff=False)
         for tag, lbl in text.parser.contents:
@@ -214,7 +219,7 @@
 
 
 class HelpWindow(Toplevel):
-
+    "Display frame with rendered html."
     def __init__(self, parent, filename, title):
         Toplevel.__init__(self, parent)
         self.wm_title(title)
@@ -224,11 +229,23 @@
         self.grid_rowconfigure(0, weight=1)
 
 
+def copy_strip():
+    "Copy idle.html to idlelib/help.html, stripping trailing whitespace."
+    src = join(abspath(dirname(dirname(dirname(__file__)))),
+               'Doc', 'build', 'html', 'library', 'idle.html')
+    dst = join(abspath(dirname(__file__)), 'help.html')
+    with open(src, 'r') as inn,\
+         open(dst, 'w') as out:
+        for line in inn:
+            out.write(line.rstrip() + '\n')
+    print('idle.html copied to help.html')
+
 def show_idlehelp(parent):
-    filename = join(abspath(dirname(__file__)), 'idle.html')
+    "Create HelpWindow; called from Idle Help event handler."
+    filename = join(abspath(dirname(__file__)), 'help.html')
     if not isfile(filename):
-        dirpath = join(abspath(dirname(dirname(dirname(__file__)))),
-                   'Doc', 'build', 'html', 'library')
+        # try copy_strip, present message
+        return 
     HelpWindow(parent, filename, 'IDLE Help')
 
 if __name__ == '__main__':
