diff --git a/Doc/c-api/conversion.rst b/Doc/c-api/conversion.rst
index 1c19879..a2e2542 100644
--- a/Doc/c-api/conversion.rst
+++ b/Doc/c-api/conversion.rst
@@ -73,6 +73,43 @@
    The return value is a pointer to *buffer* with the converted string or NULL if
    the conversion failed.
 
+   .. deprecated:: 3.1
+     Use :cfunc:`PyOS_double_to_string` instead.
+
+
+.. cfunction:: char* PyOS_double_to_string(double val, char format_code, int precision, int flags, int *ptype)
+
+   Convert a :ctype:`double` *val* to a string using supplied
+   *format_code*, *precision*, and *flags*.
+
+   *format_code* must be one of ``'e'``, ``'E'``, ``'f'``, ``'F'``, ``'g'``,
+   ``'G'``, ``'s'``, or ``'r'``.  For ``'s'`` and ``'r'``, the supplied
+   *precision* must be 0 and is ignored.  These specify the standard
+   :func:`str` and :func:`repr` formats, respectively.
+
+   *flags* can be zero or more of the values *Py_DTSF_SIGN*,
+   *Py_DTSF_ADD_DOT_0*, or *Py_DTSF_ALT*, or-ed together:
+
+   * *Py_DTSF_SIGN* means to always precede the returned string with a sign
+     character, even if *val* is non-negative.
+
+   * *Py_DTSF_ADD_DOT_0* means to ensure that the returned string will not look
+     like an integer.
+
+   * *Py_DTSF_ALT* means to apply "alternate" formatting rules.  See the
+     documentation for the :cfunc:`PyOS_snprintf` ``'#'`` specifier for
+     details.
+
+   If *ptype* is non-NULL, then the value it points to will be set to one of
+   *Py_DTST_FINITE*, *Py_DTST_INFINITE*, or *Py_DTST_NAN*, signifying that
+   *val* is a finite number, an infinite number, or not a number, respectively.
+
+   The return value is a pointer to *buffer* with the converted string or
+   *NULL* if the conversion failed. The caller is responsible for freeing the
+   returned string by calling :cfunc:`PyMem_Free`.
+
+   .. versionadded:: 3.1
+
 
 .. cfunction:: double PyOS_ascii_atof(const char *nptr)
 
diff --git a/Misc/NEWS b/Misc/NEWS
index 8d98720..2240c62 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,8 @@
 Core and Builtins
 -----------------
 
+- Issue #5835: Deprecate PyOS_ascii_formatd.
+
 - Issue #4971: Fix titlecase for characters that are their own
   titlecase, but not their own uppercase.
 
diff --git a/Python/pystrtod.c b/Python/pystrtod.c
index b5dd93d..872cc37 100644
--- a/Python/pystrtod.c
+++ b/Python/pystrtod.c
@@ -433,7 +433,7 @@
  * Return value: The pointer to the buffer with the converted string.
  **/
 char *
-PyOS_ascii_formatd(char       *buffer, 
+_PyOS_ascii_formatd(char       *buffer, 
 		   size_t      buf_size, 
 		   const char *format, 
 		   double      d)
@@ -508,6 +508,20 @@
 	return buffer;
 }
 
+char *
+PyOS_ascii_formatd(char       *buffer, 
+		   size_t      buf_size, 
+		   const char *format, 
+		   double      d)
+{
+	if (PyErr_WarnEx(PyExc_DeprecationWarning,
+			 "PyOS_ascii_formatd is deprecated, "
+			 "use PyOS_double_to_string instead", 1) < 0)
+		return NULL;
+
+	return _PyOS_ascii_formatd(buffer, buf_size, format, d);
+}
+
 #ifdef PY_NO_SHORT_FLOAT_REPR
 
 /* The fallback code to use if _Py_dg_dtoa is not available. */
@@ -638,8 +652,10 @@
 		if ((flags & Py_DTSF_ADD_DOT_0) && (format_code != 'e'))
 			format_code = 'Z';
 
-		PyOS_snprintf(format, 32, "%%%s.%i%c", (flags & Py_DTSF_ALT ? "#" : ""), precision, format_code);
-		PyOS_ascii_formatd(buf, sizeof(buf), format, val);
+		PyOS_snprintf(format, sizeof(format), "%%%s.%i%c",
+			      (flags & Py_DTSF_ALT ? "#" : ""), precision,
+			      format_code);
+		_PyOS_ascii_formatd(buf, sizeof(buf), format, val);
 		/* remove trailing zeros if necessary */
 		if (strip_trailing_zeros)
 			remove_trailing_zeros(buf);
