Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at

A meter which can be used to display the progress of a lengthy operation. It is drawn as a bar that is filled as the operation completes. In addition, an indeterminate progressmeter may be created by setting the mode attribute to undetermined. This is used when the length of time to complete an operation is not known beforehand.

More information is available in the XUL tutorial.

max, mode, value
accessibleType, max, mode, value


<progressmeter mode="determined" value="82"/>
<progressmeter mode="undetermined"/>
<!-- switching modes while the mouse is over a button -->
<progressmeter mode="determined" id="myProgress"/>
<button label="Example" onmouseover="setLoading(true)"
function setLoading(state){
  document.getElementById('myProgress').mode =
           (state) ? 'undetermined' : 'determined';


Type: integer
The maximum value that progressmeter may have. The default value if not specified is 100 such that the value may be used as a percentage.
Type: one of the values below
A determinedprogressmeter is used in cases where you know how long an operation will take. An undeterminedprogressmeter can be used when you don't and will typically be drawn as a spinning barber pole.
The progress meter uses its value attribute to determine the amount of the bar that is filled in.
The progressmeter is indeterminate.
Type: integer
An integer ranging from 0 to the maximum value that indicates the progress. For instance, if no maximum value has been set, setting the value to "0" shows an empty bar, "100" shows a bar at full length and "25" shows the first quarter of the bar.

Inherited from XUL element
align, allowevents, allownegativeassertions, class, coalesceduplicatearcs, collapsed, container, containment, context, contextmenu, datasources, dir, empty, equalsize, flags, flex, height, hidden, id, insertafter, insertbefore, left, maxheight, maxwidth, menu, minheight, minwidth, mousethrough, observes, ordinal, orient, pack, persist, popup, position, preference-editable, querytype, ref, removeelement, sortDirection, sortResource, sortResource2, statustext, style, template, tooltip, tooltiptext, top, uri, wait-cursor, width


Type: integer
A value indicating the type of accessibility object for the element.
Type: integer
Gets and sets the value of the max attribute.
Type: string
Gets and sets the value of the mode attribute.
Type: string
Gets and sets the value of the value attribute. For textbox and user editable menulist elements, the contents, as visible to the user, are read and set using the Textbox.value and Menulist.value syntax.


Inherited Properties
align, attributes, allowEvents, baseURI, boxObject, builder, childElementCount, childNodes, children, className, clientHeight, clientLeft, clientTop, clientWidth, collapsed, contextMenu, controllers, database, datasources, dir, firstChild, firstElementChild, flex, height, hidden, id, lastChild, lastElementChild, left, localName, maxHeight, maxWidth, menu, minHeight, minWidth, namespaceURI, nextElementSibling, nextSibling, nodeName, nodeType, nodeValue, observes, ordinal, orient, ownerDocument, pack, parentNode, persist, prefix, previousElementSibling, previousSibling, ref, resource, scrollHeight, scrollLeft, scrollTop, scrollWidth, statusText, style, tagName,textContent, tooltip, tooltipText, top, width


Inherited Methods
addEventListener(), appendChild(), blur, click, cloneNode(), compareDocumentPosition, dispatchEvent(), doCommand, focus, getAttribute(), getAttributeNode(), getAttributeNodeNS(), getAttributeNS(), getBoundingClientRect(), getClientRects(), getElementsByAttribute, getElementsByAttributeNS, getElementsByClassName(), getElementsByTagName(), getElementsByTagNameNS(), getFeature, getUserData, hasAttribute(), hasAttributeNS(), hasAttributes(), hasChildNodes(), insertBefore(), isDefaultNamespace(), isEqualNode, isSameNode, isSupported(), lookupNamespaceURI, lookupPrefix, normalize(), querySelector(), querySelectorAll(), removeAttribute(), removeAttributeNode(), removeAttributeNS(), removeChild(), removeEventListener(), replaceChild(), setAttribute(), setAttributeNode(), setAttributeNodeNS(), setAttributeNS(), setUserData


Document Tags and Contributors

 Contributors to this page: Sheppy, trevorh, Enn, Marsf, Mgjbot, James0, Allanbonadio, Ptak82, Dria, Pmash
 Last updated by: Sheppy,