At any point during the lifetime of a page you can export its current state to a standalone html file you can freely share.

You can export in any of the following ways:

  • Open the options by clicking the options button at the top right and then click Export.
  • Open the options by holding Shift and typing A A A (three consecutive A’s) and then click Export.
  • Hold Shift and type A A E (two A’s then E).

Note that for the keyboard shortcuts to work, the focus should be on some page content.

Export function

By default, when you export a page, the result is simply downloaded as a static file.

You can override this default behavior by passing an export_fn argument when creating the Page instance. e.g:

import time

from awe import Page

from utils import save_to_s3  # example import, not something awe comes bundled with

def custom_export_fn(index_html):
    # index_html is the static html content as a string.
    # You can, for example, save the content to S3.
    key = 'page-{}.html'.format(time.time())

    # Returning a dict from the export_fn function tells awe to skip the default download behavior.
    # awe will also display a simple key/value table modal built from the dict result.
    # Returning anything else is expected to be a string that will be downloaded in the browser.
    # This can be the unmodified index_html, a modified one, a json with statistics, etc...
    return {'status': 'success', 'key': key}

def main():
    page = Page(export_fn=custom_export_fn)

if __name__ == '__main__':


You can also generate the page content offline, in python only and export it in code by calling page.export().

The return value of export is the return value of export_fn which defaults to the static html content as string.


from awe import Page

def main():
    page = Page(offline=True)
    # you can override the export_fn supplied during creation by passing
    print(page.export(export_fn=lambda index_html: index_html[:100]))

if __name__ == '__main__':