Extracted from Last Call version of the Mobile Web Best Practices.

Overall behavior

[CONTEXT] Take all reasonable steps to find out about the device/browser (client) capabilities, adaptation and other transformation that takes place for any instance of an access to a resource.

[CAPABILITIES] Exploit device capabilities. Do not take a least common denominator approach.

[DEFICIENCIES] Take reasonable steps to work around deficient implementations.

[TESTING] Carry out testing on actual devices as well as emulators.

Navigation and links

[URIS] Keep the URIs of site entry points short.

[BALANCE] Design the service with a broadly balanced navigation tree where numbers of links on pages is balanced against depth of navigation.

[THEMATIC_CONSISTENCY] Ensure that links provide a thematically coherent experience when accessed from a device other than the one on which they were captured.

[ACCESS_KEYS] Assign access keys to links in navigational menus and frequently accessed functionality.

[IMAGE_MAPS] Do not use image maps unless you know the target client supports them and has sufficient screen area and an appropriate means of selection, such as a stylus or navigation keys. When using image maps under these circumstances, use client side image maps unless the regions required cannot be described with an available geometric shape.

[SERVER_SIDE_IMAGE_MAPS] Do not use a server side image map unless you know that the client provides a means of selection within the image map.

[POP_UPS] Do not cause pop-ups or other windows to appear and do not change the current window without informing the user.

[AUTO_REFRESH] Do not create periodically auto-refreshing pages, unless you have informed the user and provided a means of stopping it.

[REDIRECTION] Do not use markup to redirect pages automatically. Instead, configure the server to perform redirects by means of HTTP 3xx codes.

Page content and layout

[SUITABLE] Ensure that content is suitable for use in a mobile context.

[CLARITY] Use clear and simple language.

[LIMITED] Limit content to what the user has requested.

[PAGE_SIZE_USABLE] Divide pages into usable but limited size portions.

[PAGE_SIZE_LIMIT] Ensure that the overall size of page is appropriate to bandwidth, the memory limitations of the device and other device and delivery channel characteristics if they can be determined.

[SCROLLING] Limit scrolling to one direction, unless secondary scrolling cannot be avoided.

[SCROLLING_LIMIT] Limit secondary scrolling to objects that require it, where it cannot be avoided.

[CENTRAL_MEANING] Ensure that material that is central to the meaning of the page precedes material that is not.

[GRAPHICS_FOR_SPACING] Do not use graphics for spacing.

[LARGE_GRAPHICS] Do not use images that cannot be rendered by the device. Avoid large or high resolution images except where critical information would otherwise be lost.

[USE_OF_COLOR] Ensure that information conveyed with color is also available without color.

[COLOR_CONTRAST] Ensure that foreground and background color combinations provide sufficient contrast.

[BACKGROUND_IMAGE_SUPPORT] Do not use background images unless you know the device supports them.

[BACKGROUND_IMAGE_READABILITY] When using background images make sure that content remains readable on the device.

Page definition

[PAGE_TITLE] Provide a short but descriptive page title.

[NO_FRAMES] Do not use frames.

[STRUCTURE] Ensure that perceivable structures within the content can be programmatically determined.

[TABLES_SUPPORT] Do not use tables unless the client is known to support them. Do not use multi-layer tables.

[TABLES_LAYOUT] Do not use tables for layout.

[TABLES_ALTERNATIVES] Where possible, use an alternative to tabular presentation.

[NON-TEXT_ALTERNATIVES] Provide textual alternatives for non-text elements.

[OBJECTS_OR_SCRIPT] Do not embed objects or script in pages unless you know the device supports them.

[IMAGES_SPECIFY_SIZE] Always specify the size of images in markup.

[IMAGES_RESIZING] Resize images at the server.

[VALID_MARKUP] Create documents that validate to published formal grammars.

[MEASURES] Do not use pixel measures and do not use absolute units in markup language attribute values and style sheet property values.

[STYLE_SHEETS_USE] Use style sheets to control layout and presentation, unless the device is known not to support them.

[STYLE_SHEETS_SUPPORT] Organize documents so that they may be read without style sheets.

[STYLE_SHEETS_SIZE] Keep style sheets as small as possible.

[MINIMIZE] Use terse efficient markup.

[CONTENT_FORMAT_SUPPORT] Send content in a format that is known to be supported by the device.

[CONTENT_FORMAT_PREFERRED] Where possible send content in a client's preferred format.

[CHARACTER_ENCODING_SUPPORT] Ensure that content is encoded using a character encoding that is known to be supported by the target device.

[CHARACTER_ENCODING_USE] Indicate in the response the character encoding being used.

[ERROR_MESSAGES] Provide informative error messages, and a means of navigating away from an error message back to useful information.

[COOKIES] Do not use cookies unless you know the device supports them.

[CACHING] Attach caching information to the content.

User input

[MINIMIZE_KEYSTROKES] Keep the number of keystrokes to a minimum.

[AVOID_FREE_TEXT] Avoid free text entry where possible.

[PROVIDE_DEFAULTS] Provide pre-selected default values where possible.

[DEFAULT_INPUT_MODE] Specify a default text entry mode, language and/or input format, if the target device is known to support it.

[TAB_ORDER] Create a logical tab order through links, form controls and objects.

[CONTROL_LABELLING] Label all controls appropriately. Explicitly associate labels with controls where the device supports this. Position labels relative to controls appropriately.